g++ -Og 作用

  • g++ -Og

来自 man g++

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Options for Debugging Your Program
To tell GCC to emit extra information for use by a debugger, in almost
all cases you need only to add -g to your other options.

GCC allows you to use -g with -O. The shortcuts taken by optimized
code may occasionally be surprising: some variables you declared may
not exist at all; flow of control may briefly move where you did not
expect it; some statements may not be executed because they compute
constant results or their values are already at hand; some statements
may execute in different places because they have been moved out of
loops. Nevertheless it is possible to debug optimized output. This
makes it reasonable to use the optimizer for programs that might have
bugs.

If you are not using some other optimization option, consider using -Og
with -g. With no -O option at all, some compiler passes that collect
information useful for debugging do not run at all, so that -Og may
result in a better debugging experience.
-g Produce debugging information in the operating system's native
format (stabs, COFF, XCOFF, or DWARF). GDB can work with this
debugging information.
On most systems that use stabs format, -g enables use of extra
debugging information that only GDB can use; this extra information
makes debugging work better in GDB but probably makes other
debuggers crash or refuse to read the program. If you want to
control for certain whether to generate the extra information, use
-gstabs+, -gstabs, -gxcoff+, -gxcoff, or -gvms (see below).