Chapter 3. The LLDB debugger
The LLDB debugger is a command-line tool for debugging C and C++ programs. Use LLDB to inspect memory within the code being debugged, control the execution state of the code, and detect the execution of particular sections of code.
LLVM Toolset is distributed with LLDB 19.1.7.
3.1. Prerequisites Copy linkLink copied to clipboard!
- LLVM Toolset is installed.
Your compiler is configured to create debug information.
For instructions on configuring the Clang compiler, see Controlling Debug Information in the Clang Compiler User’s Manual.
For instructions on configuring the GCC compiler, see Preparing a Program for Debugging in the Red Hat Developer Toolset User Guide.
3.2. Starting a debugging session Copy linkLink copied to clipboard!
Use LLDB to start an interactive debugging session.
Procedure
Run LLDB on a program you want to debug:
lldb <binary_file>
$ lldb <binary_file>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Replace
<binary_file>
with the name of your compiled program.You have started your LLDB debugging session in interactive mode. Your command-line terminal now displays the default prompt (
lldb
).To quit the debugging session and return to the shell prompt:
(lldb) quit
(lldb) quit
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.3. Executing your program during a debugging session Copy linkLink copied to clipboard!
Use LLDB to execute your program during your debugging session. The execution of your program stops when the first breakpoint is reached, when an error occurs, or when the program terminates.
Prerequisites
Procedure
Execute the program you are debugging:
(lldb) run
(lldb) run
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Alternatively, execute the program you are debugging by using a specific argument:
(lldb) run <argument>
(lldb) run <argument>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Replace
<argument>
with the command-line argument you want to use.
3.4. Using breakpoints Copy linkLink copied to clipboard!
Use breakpoints to pause the execution of your program at a set point in your source code.
Prerequisites
Procedure
To set a new breakpoint on a specific line, enter:
(lldb) breakpoint set --file <source_file_name> --line <line_number>
(lldb) breakpoint set --file <source_file_name> --line <line_number>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Replace
<source_file_name>
with the name of your source file and<line_number>
with the line number you want to set your breakpoint at.To set a breakpoint on a specific function, enter:
(lldb) breakpoint set --name <function_name>
(lldb) breakpoint set --name <function_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
Replace
<function_name>
with the name of the function you want to set your breakpoint at.
-
Replace
To display a list of currently set breakpoints, enter:
(lldb) breakpoint list
(lldb) breakpoint list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow To delete a breakpoint, run:
(lldb) breakpoint clear -f <source_file_name> -l <line_number>
(lldb) breakpoint clear -f <source_file_name> -l <line_number>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
Replace
<source_file_name>
with the name of your source file and<line_number>
with line number of the breakpoint you want to delete.
-
Replace
To resume the execution of your program after it reached a breakpoint, enter:
(lldb) continue
(lldb) continue
Copy to Clipboard Copied! Toggle word wrap Toggle overflow To skip a specific number of breakpoints, enter:
(lldb) continue -i <breakpoints_to_skip>
(lldb) continue -i <breakpoints_to_skip>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
Replace
<breakpoints_to_skip>
with the number of breakpoints you want to skip. To skip a loop, set the<breakpoints_to_skip>
to match the loop iteration count.
-
Replace
3.5. Stepping through code Copy linkLink copied to clipboard!
You can use LLDB to step through the code of your program to execute only one line of code after the line pointer.
Prerequisites
Procedure
- Set your line pointer to the line you want to execute.
Enter:
(lldb) step
(lldb) step
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.6. Listing source code Copy linkLink copied to clipboard!
Before you run the program you are debugging, the LLDB debugger automatically displays the first 10 lines of source code. Each time the execution of the program is stopped, LLDB displays the line of source code on which it stopped and its surrounding lines. You can use LLDB to manually trigger the display of source code during your debugging session.
Prerequisites
Procedure
To list the first 10 lines of the source code of the program you are debugging, enter:
(lldb) list
(lldb) list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow (lldb) list <source_file_name>:<line_number>
(lldb) list <source_file_name>:<line_number>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Replace
<source_file_name>
with the name of your source file and<line_number>
with the number of the line you want to display.
3.7. Displaying current program data Copy linkLink copied to clipboard!
The LLDB debugger provides data on variables of any complexity, any valid expressions, and function call return values. You can use LLDB to display data relevant to the program state.
Prerequisites
Procedure
Display the current value of a certain variable, expression, or return value:
(lldb) print <data_name>
(lldb) print <data_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Replace
<data_name>
with data you want to display.