Intel® C++ Compiler Classic Developer Guide and Reference

ID 767249
Date 7/13/2023
Public
Document Table of 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 instrumentations needed for the thread data sharing and reentrant call detection.

For shared data and reentrancy detection, option -qopenmp must be set.

On Linux* systems, debuggers read debug information from executable images. As a result, information is written to object files and then added to the executable by the linker.

On macOS systems, debuggers read debug information from object files. As a result, the executables don't contain any debug information. Therefore, if you want to be able to debug on these systems, you must retain the object files.

IDE Equivalent

Visual Studio: None

Eclipse: Advanced Debugging > Enable Parallel Debug Checks (-debug parallel)

Debug > Enable Expanded Line Number Information (-debug expr-source-pos)

Xcode: None

Alternate Options

For -debug full, -debug all, or -debug

Linux and macOS: -g

Windows: /debug:full, /debug:all, or /debug

For -debug variable-locations

Linux and macOS: -fvar-tracking

Windows: None

For -debug semantic-stepping

Linux and macOS: -fvar-tracking-assignments

Windows: None

See Also