Developer Guide and Reference

Contents

debug (Linux*
and
macOS*
)

Enables or disables generation of debugging information.

Syntax

Linux:
-debug
[
keyword
]
macOS:
-debug
[
keyword
]
Windows:
None
Arguments
keyword
Is the type of debugging information to be generated. Possible values are:
none
Disables generation of debugging information.
full
or
all
Generates complete debugging information.
minimal
Generates line number information for debugging.
[no]emit_column
Determines whether the compiler generates column number information for debugging.
[no]expr-source-pos
Determines whether the compiler generates source position information at the expression level of granularity.
[no]inline-debug-info
Determines whether the compiler generates enhanced debug information for inlined code.
[no]pubnames
Determines whether the compiler generates a DWARF debug_pubnames section.
[no]semantic-stepping
Determines whether the compiler generates enhanced debug information useful for breakpoints and stepping.
[no]variable-locations
Determines whether the compiler generates enhanced debug information useful in finding scalar local variables.
extended
Generates complete debugging information and also sets keyword values
semantic-stepping
and
variable-locations
.
[no]parallel
(Linux only)
Determines whether the compiler generates parallel debug code instrumentations useful for thread data sharing and reentrant call detection.
For information on the non-default settings for these keywords, see the Description section.
Default
varies
Normally, the default is
-debug none
and no debugging information is generated. However, on Linux*, the
-debug inline-debug-info
option will be enabled by default if you compile with optimizations (option
-O2
or higher) and debugging is enabled (option
-g
).
Description
This option enables or disables generation of debugging information.
By default, enabling debugging, will disable optimization. To enable both debugging and optimization use the
-debug
option together with one of the optimization level options (
-O3
,
-O2
or
-O3
).
Keywords
semantic-stepping
,
inline-debug-info
,
variable-locations
, and
extended
can be used in combination with each other. If conflicting keywords are used in combination, the last one specified on the command line has precedence.
Option
Description
-debug none
Disables generation of debugging information.
-debug full
or
-debug all
Generates complete debugging information. It is the same as specifying
-debug
with no keyword.
-debug minimal
Generates line number information for debugging.
-debug emit_column
Generates column number information for debugging.
-debug expr-source-pos
Generates source position information at the statement level of granularity.
-debug inline-debug-info
Generates enhanced debug information for inlined code.
On inlined functions, symbols are (by default) associated with the caller. This option causes symbols for inlined functions to be associated with the source of the called function.
-debug pubnames
The compiler generates a DWARF debug_pubnames section. This provides a means to list the names of global objects and functions in a compilation unit.
-debug semantic-stepping
Generates enhanced debug information useful for breakpoints and stepping. It tells the debugger to stop only at machine instructions that achieve the final effect of a source statement.
For example, in the case of an assignment statement, this might be a store instruction that assigns a value to a program variable; for a function call, it might be the machine instruction that executes the call. Other instructions generated for those source statements are not displayed during stepping.
This option has no impact unless optimizations have also been enabled.
-debug variable-locations
Generates enhanced debug information useful in finding scalar local variables. It uses a feature of the Dwarf object module known as "location lists".
This feature allows the run-time locations of local scalar variables to be specified more accurately; that is, whether, at a given position in the code, a variable value is found in memory or a machine register.
-debug extended
Sets keyword values
semantic-stepping
and
variable-locations
. It also tells the compiler to include column numbers in the line information.
Generates complete debugging information and also sets keyword values
semantic-stepping
and
variable-locations
. This is a more powerful setting than
-debug full
or
-debug all
.
-debug parallel
Generates parallel debug code