Questo contenuto non è disponibile nella lingua selezionata.
Using Clang and LLVM Toolset
Installing and Using Clang and LLVM Toolset
Abstract
Chapter 1. Clang and LLVM Toolset Copia collegamentoCollegamento copiato negli appunti!
1.1. About Clang and LLVM Toolset Copia collegamentoCollegamento copiato negli appunti!
Clang and LLVM Toolset is a Red Hat offering for developers on the Red Hat Enterprise Linux platform. It provides the LLVM compiler infrastructure framework, the Clang compiler for the C and C++ languages, the LLDB debugger, and related tools for code analysis.
Clang and LLVM Toolset is distributed as a part of Red Hat Developer Tools for Red Hat Enterprise Linux 7 and is available as a module in Red Hat Enterprise Linux 8.
The following components are available as a part of Clang and LLVM Toolset:
| Name | Version | Description |
|---|---|---|
|
| 7.0.1 | A LLVM compiler front-end for C and C++. |
|
| 7.0.1 | A C and C++ debugger using portions of LLVM. |
|
| 3.6.2 | A build management system. |
|
| 7.0.1 | Runtime libraries for LLVM. |
|
| 7.0.1 | A collection of modular and reusable compiler and toolchain technologies. |
|
| 7.0.1 | A library for utilization of Open MP API specification for parallel programming. |
|
| 0.7.1 | A Software testing tool for LLVM- and Clang-based test suites. |
Package versions are the same for Red Hat Enterprise Linux 7 and Red Hat Enterprise Linux 8.
1.2. Compatibility Copia collegamentoCollegamento copiato negli appunti!
Clang and LLVM Toolset is available for Red Hat Enterprise Linux 7 and Red Hat Enterprise Linux 8 on the following architectures:
- The 64-bit Intel and AMD architectures
- The 64-bit ARM architecture
- The IBM Power Systems architecture
- The little-endian variant of IBM Power Systems architecture
- The IBM Z Systems architecture
1.3. Getting Access to Clang and LLVM Toolset on Red Hat Enterprise Linux 7 Copia collegamentoCollegamento copiato negli appunti!
Clang and LLVM Toolset is an offering that is distributed as a part of the Red Hat Developer Tools content set, which is available to customers with deployments of Red Hat Enterprise Linux 7. To install Clang and LLVM Toolset, enable the Red Hat Developer Tools and Red Hat Software Collections repositories by using the Red Hat Subscription Management and add the Red Hat Developer Tools GPG key to your system.
Enable the
rhel-7-variant-devtools-rpmsrepository:subscription-manager repos --enable rhel-7-variant-devtools-rpms
# subscription-manager repos --enable rhel-7-variant-devtools-rpmsCopy to Clipboard Copied! Toggle word wrap Toggle overflow Replace variant with the Red Hat Enterprise Linux system variant (
serverorworkstation).NoteWe recommend developers to use Red Hat Enterprise Linux Server for access to the widest range of development tools.
Enable the
rhel-variant-rhscl-7-rpmsrepository:subscription-manager repos --enable rhel-variant-rhscl-7-rpms
# subscription-manager repos --enable rhel-variant-rhscl-7-rpmsCopy to Clipboard Copied! Toggle word wrap Toggle overflow Replace variant with the Red Hat Enterprise Linux system variant (
serverorworkstation).Add the Red Hat Developer Tools key to your system:
cd /etc/pki/rpm-gpg wget -O RPM-GPG-KEY-redhat-devel https://www.redhat.com/security/data/a5787476.txt rpm --import RPM-GPG-KEY-redhat-devel
# cd /etc/pki/rpm-gpg # wget -O RPM-GPG-KEY-redhat-devel https://www.redhat.com/security/data/a5787476.txt # rpm --import RPM-GPG-KEY-redhat-develCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Once the subscription is attached to the system and repositories enabled, you can install Red Hat Clang and LLVM Toolset as described in Section 1.4, “Installing Clang and LLVM Toolset”.
Additional Resources
- For more information on how to register your system using Red Hat Subscription Management and associate it with subscriptions, see the Red Hat Subscription Management collection of guides.
- For detailed instructions on subscription to Red Hat Software Collections, see the Red Hat Developer Toolset User Guide, Section 1.4. Getting Access to Red Hat Developer Toolset.
1.4. Installing Clang and LLVM Toolset Copia collegamentoCollegamento copiato negli appunti!
Clang and LLVM Toolset is distributed as a collection of RPM packages that can be installed, updated, uninstalled, and inspected by using the standard package management tools that are included in Red Hat Enterprise Linux. Note that a valid subscription that provides access to the Red Hat Developer Tools content set is required in order to install Clang and LLVM Toolset on your Red Hat Enterprise Linux 7 system. For detailed instructions on how to associate your Red Hat Enterprise Linux 7 system with an appropriate subscription and get access to Clang and LLVM Toolset, see Section 1.3, “Getting Access to Clang and LLVM Toolset on Red Hat Enterprise Linux 7”.
Before installing Clang and LLVM Toolset, install all available Red Hat Enterprise Linux updates.
Install all of the components included in Clang and LLVM Toolset for your operating system:
On Red Hat Enterprise Linux 7, install the llvm-toolset-7.0 package:
yum install llvm-toolset-7.0
# yum install llvm-toolset-7.0Copy to Clipboard Copied! Toggle word wrap Toggle overflow On Red Hat Enterprise Linux 8, install the llvm-toolset module:
yum module install llvm-toolset
# yum module install llvm-toolsetCopy to Clipboard Copied! Toggle word wrap Toggle overflow This installs all development and debugging tools, and other dependent packages to the system.
1.5. Additional Resources Copia collegamentoCollegamento copiato negli appunti!
A detailed description of the Clang and LLVM Toolset and all its features is beyond the scope of this book. For more information, see the resources listed below.
Online Documentation
- LLVM documentation overview — The official LLVM documentation.
Chapter 2. clang Copia collegamentoCollegamento copiato negli appunti!
clang is a LLVM compiler front end for C-based languages: C, C++, Objective C/C++, OpenCL, and Cuda.
Clang and LLVM Toolset is distributed with clang 7.0.1.
2.1. Installing clang Copia collegamentoCollegamento copiato negli appunti!
In Clang and LLVM Toolset on Red Hat Enterprise Linux 7, clang is provided by the llvm-toolset-7.0-clang package and is automatically installed with the llvm-toolset-7.0 package. On Red Hat Enterprise Linux 8, clang is provided by the llvm-toolset module. See Section 1.4, “Installing Clang and LLVM Toolset”.
2.2. Using clang Copia collegamentoCollegamento copiato negli appunti!
You can execute any command using the scl utility on Red Hat Enterprise Linux 7, causing it to be run with the Clang and LLVM Toolset binaries available. To use Clang and LLVM Toolset on Red Hat Enterprise Linux 7 without a need to use scl enable with every command, run a shell session with:
scl enable llvm-toolset-7.0 'bash'
$ scl enable llvm-toolset-7.0 'bash'
2.2.1. Compiling a C Source File to a Binary File Copia collegamentoCollegamento copiato negli appunti!
To compile a C program to a binary file:
For Red Hat Enterprise Linux 7:
scl enable llvm-toolset-7.0 'clang -o output_file source_file'
$ scl enable llvm-toolset-7.0 'clang -o output_file source_file'Copy to Clipboard Copied! Toggle word wrap Toggle overflow For Red Hat Enterprise Linux 8:
clang -o output_file source_file
$ clang -o output_file source_fileCopy to Clipboard Copied! Toggle word wrap Toggle overflow
This creates a binary file named output_file in the current working directory. If the -o option is omitted, the compiler creates a binary file named a.out by default.
Example 2.1. Compiling a C Program with clang
Consider a source file named hello.c with the following contents:
Compile this source code on the command line by using the clang compiler from Clang and LLVM Toolset:
For Red Hat Enterprise Linux 7:
scl enable llvm-toolset-7.0 'clang -o hello hello.c'
$ scl enable llvm-toolset-7.0 'clang -o hello hello.c'Copy to Clipboard Copied! Toggle word wrap Toggle overflow For Red Hat Enterprise Linux 8:
clang -o hello hello.c
$ clang -o hello hello.cCopy to Clipboard Copied! Toggle word wrap Toggle overflow
This creates a new binary file called hello in the current working directory.
2.2.2. Compiling a C Source File to an Object File Copia collegamentoCollegamento copiato negli appunti!
When you are working on a project that consists of several source files, it is common to compile an object file for each of the source files first and then link these object files together. This way, when you change a single source file, you can recompile only this file without having to compile the entire project.
To compile a C source file to an object file:
For Red Hat Enterprise Linux 7:
scl enable llvm-toolset-7.0 'clang -o object_file -c source_file'
$ scl enable llvm-toolset-7.0 'clang -o object_file -c source_file'Copy to Clipboard Copied! Toggle word wrap Toggle overflow For Red Hat Enterprise Linux 8:
clang -o object_file -c source_file
$ clang -o object_file -c source_fileCopy to Clipboard Copied! Toggle word wrap Toggle overflow
This creates an object file named object_file. If the -o option is omitted, the compiler creates a file named after the source file with the .o file extension.
2.2.3. Linking C Object files to a Binary File Copia collegamentoCollegamento copiato negli appunti!
To link object files together and create a binary file:
For Red Hat Enterprise Linux 7:
scl enable llvm-toolset-7.0 'clang -o output_file object_file ...'
$ scl enable llvm-toolset-7.0 'clang -o output_file object_file ...'Copy to Clipboard Copied! Toggle word wrap Toggle overflow For Red Hat Enterprise Linux 8:
clang -o output_file object_file ...
$ clang -o output_file object_file ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Certain more recent library features are statically linked into applications built with Clang and LLVM Toolset to support execution on multiple versions of Red Hat Enterprise Linux. This creates an additional minor security risk as standard Red Hat Enterprise Linux errata do not change this code. If the need arises for developers to rebuild their applications due to this risk, Red Hat will communicate this using a security erratum.
Because of this additional security risk, developers are strongly advised not to statically link their entire application for the same reasons.
2.3. Running a C Program Copia collegamentoCollegamento copiato negli appunti!
When clang compiles a program, it creates an executable binary file. To run this program on the command line, change to the directory with the executable file and run the program:
./file_name
$ ./file_name
Example 2.2. Running a C Program on the Command Line
Assuming that you have successfully compiled the hello binary file as shown in Example 2.1, “Compiling a C Program with clang”, you can run it by typing the following command:
./hello
$ ./hello
Hello, World!
2.4. Using clang++ Copia collegamentoCollegamento copiato negli appunti!
You can execute any command using the scl utility on Red Hat Enterprise Linux 7, causing it to be run with the Clang and LLVM Toolset binaries available. To use Clang and LLVM Toolset on Red Hat Enterprise Linux 7 without a need to use scl enable with every command, run a shell session with:
scl enable llvm-toolset-7.0 'bash'
$ scl enable llvm-toolset-7.0 'bash'
2.4.1. Compiling a C++ Source File to a Binary File Copia collegamentoCollegamento copiato negli appunti!
To compile a C++ program on the command line, run the clang++ compiler as follows:
For Red Hat Enterprise Linux 7:
scl enable llvm-toolset-7.0 'clang++ -o output_file source_file ...'
$ scl enable llvm-toolset-7.0 'clang++ -o output_file source_file ...'Copy to Clipboard Copied! Toggle word wrap Toggle overflow For Red Hat Enterprise Linux 8:
clang++ -o output_file source_file ...
$ clang++ -o output_file source_file ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow
This creates a binary file named output_file in the current working directory. If the -o option is omitted, the clang++ compiler creates a file named a.out by default.
2.4.2. Compiling a C++ Source File to an Object File Copia collegamentoCollegamento copiato negli appunti!
When you are working on a project that consists of several source files, it is common to compile an object file for each of the source files first and then link these object files together. This way, when you change a single source file, you can recompile only this file without having to compile the entire project.
To compile an object file on the command line:
For Red Hat Enterprise Linux 7:
scl enable llvm-toolset-7.0 'clang++ -o object_file -c source_file'
$ scl enable llvm-toolset-7.0 'clang++ -o object_file -c source_file'Copy to Clipboard Copied! Toggle word wrap Toggle overflow For Red Hat Enterprise Linux 8:
clang++ -o object_file -c source_file
$ clang++ -o object_file -c source_fileCopy to Clipboard Copied! Toggle word wrap Toggle overflow
This creates an object file named object_file. If the -o option is omitted, the clang++ compiler creates a file named after the source file with the .o file extension.
2.4.3. Linking C++ Object Files to a Binary File Copia collegamentoCollegamento copiato negli appunti!
To link object files together and create a binary file:
For Red Hat Enterprise Linux 7:
scl enable llvm-toolset-7.0 'clang++ -o output_file object_file ...'
$ scl enable llvm-toolset-7.0 'clang++ -o output_file object_file ...'Copy to Clipboard Copied! Toggle word wrap Toggle overflow For Red Hat Enterprise Linux 8:
clang++ -o output_file object_file ...
$ clang++ -o output_file object_file ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Certain more recent library features are statically linked into applications built with Clang and LLVM Toolset to support execution on multiple versions of Red Hat Enterprise Linux. This creates an additional minor security risk as standard Red Hat Enterprise Linux errata do not change this code. If the need arises for developers to rebuild their applications due to this risk, Red Hat will communicate this using a security erratum.
Because of this accitional security risk, developers are strongly advised not to statically link their entire application for the same reasons.
Example 2.3. Compiling a C++ Program on the Command Line
Consider a source file named hello.cpp with the following contents:
Compile this source code on the command line by using the clang++ compiler from Clang and LLVM Toolset:
For Red Hat Enterprise Linux 7:
scl enable llvm-toolset-7.0 'clang++ -o hello hello.cpp'
$ scl enable llvm-toolset-7.0 'clang++ -o hello hello.cpp'Copy to Clipboard Copied! Toggle word wrap Toggle overflow For Red Hat Enterprise Linux 8:
clang++ -o hello hello.cpp
$ clang++ -o hello hello.cppCopy to Clipboard Copied! Toggle word wrap Toggle overflow
This creates a new binary file called hello in the current working directory.
2.5. Running a C++ Program Copia collegamentoCollegamento copiato negli appunti!
When clang++ compiles a program, it creates an executable binary file. Change to the directory with the executable file and run this program:
./file_name
./file_name
Example 2.4. Running a C++ Program on the Command Line
Assuming that you have successfully compiled the hello binary file as shown in Example 2.3, “Compiling a C++ Program on the Command Line”, you can run it by typing the following at a shell prompt:
./hello
$ ./hello
Hello, World!
2.6. Using the clang Integrated Assembler Copia collegamentoCollegamento copiato negli appunti!
To produce an object file from an assembly language program, run the clang tool as follows:
For Red Hat Enterprise Linux 7:
scl enable llvm-toolset-7.0 'clang option... -o object_file source_file'
$ scl enable llvm-toolset-7.0 'clang option... -o object_file source_file'Copy to Clipboard Copied! Toggle word wrap Toggle overflow For Red Hat Enterprise Linux 8:
clang option... -o object_file source_file
$ clang option... -o object_file source_fileCopy to Clipboard Copied! Toggle word wrap Toggle overflow
This creates an object file named object_file in the current working directory.
2.7. Additional Resources Copia collegamentoCollegamento copiato negli appunti!
A detailed description of the clang compiler and its features is beyond the scope of this book. For more information, see the resources listed below.
Installed Documentation
clang(1) — The manual page for the
clangcompiler provides detailed information on its usage; with few exceptions,clang++accepts the same command line options asclang. To display the manual page for the version included in Clang and LLVM Toolset:For Red Hat Enterprise Linux 7:
scl enable llvm-toolset-7.0 'man clang'
$ scl enable llvm-toolset-7.0 'man clang'Copy to Clipboard Copied! Toggle word wrap Toggle overflow For Red Hat Enterprise Linux 8:
man clang
$ man clangCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Online Documentation
-
clang — The clang compiler documentation provides detailed information on
clangusage.
See Also
- Chapter 1, Clang and LLVM Toolset — An overview of Clang and LLVM Toolset and more information on how to install it on your system.
Chapter 3. lldb Copia collegamentoCollegamento copiato negli appunti!
lldb is a command line tool you can use to debug programs written in various programming languages. It allows you to inspect memory within the code being debugged, control the execution state of the code, detect the execution of particular sections of code, and much more.
Clang and LLVM Toolset is distributed with lldb 7.0.1.
You can execute any command using the scl utility on Red Hat Enterprise Linux 7, causing it to be run with the Clang and LLVM Toolset binaries available. To use Clang and LLVM Toolset on Red Hat Enterprise Linux 7 without a need to use scl enable with every command, run a shell session with:
scl enable llvm-toolset-7.0 'bash'
$ scl enable llvm-toolset-7.0 'bash'
3.1. Installing lldb Copia collegamentoCollegamento copiato negli appunti!
The lldb tool is provided by the llvm-toolset-7.0-lldb package and is automatically installed with the llvm-toolset-7.0 package. See Section 1.4, “Installing Clang and LLVM Toolset”.
3.2. Preparing a Program for Debugging Copia collegamentoCollegamento copiato negli appunti!
To compile a C or C++ program with debugging information that lldb can read, make sure the compiler you use is instructed to create debug information.
- For instructions on suitably configuring clang, see the section Controlling Debug Information in Clang Compiler User’s Manual.
- For instructions on suitably configuring GCC, see Red Hat Developer Toolset User Guide, Section 7.2. Preparing a Program for Debugging.
3.3. Running lldb Copia collegamentoCollegamento copiato negli appunti!
To run lldb on a program you want to debug:
For Red Hat Enterprise Linux 7:
scl enable llvm-toolset-7.0 'lldb program_file_name'
$ scl enable llvm-toolset-7.0 'lldb program_file_name'Copy to Clipboard Copied! Toggle word wrap Toggle overflow For Red Hat Enterprise Linux 8:
lldb program_file_name
$ lldb program_file_nameCopy to Clipboard Copied! Toggle word wrap Toggle overflow
This command starts lldb in an interactive mode and displays the default prompt, (lldb).
To quit the debugging session and return to the shell prompt, run the following command at any time:
(lldb) quit
(lldb) quit
Example 3.1. Running the lldb Utility on the fibonacci Binary File
Consider a C source file named fibonacci.c with the following content:
Enable the debug information and compile the fibonacci.c with the following command:
For Red Hat Enterprise Linux 7:
scl enable llvm-toolset-7.0 'clang -g -o fibonacci fibonacci.c'
$ scl enable llvm-toolset-7.0 'clang -g -o fibonacci fibonacci.c'Copy to Clipboard Copied! Toggle word wrap Toggle overflow For Red Hat Enterprise Linux 8:
clang -g -o fibonacci fibonacci.c
$ clang -g -o fibonacci fibonacci.cCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Refer to Section 3.2, “Preparing a Program for Debugging” for information about controlling debug information using GCC or clang.
Start debugging the program with lldb:
For Red Hat Enterprise Linux 7:
scl enable llvm-toolset-7.0 'lldb fibonacci'
$ scl enable llvm-toolset-7.0 'lldb fibonacci' (lldb) target create "fibonacci" Current executable set to 'fibonacci' (x86_64). (lldb)Copy to Clipboard Copied! Toggle word wrap Toggle overflow For Red Hat Enterprise Linux 8:
lldb fibonacci
$ lldb fibonacci (lldb) target create "fibonacci" Current executable set to 'fibonacci' (x86_64). (lldb)Copy to Clipboard Copied! Toggle word wrap Toggle overflow
The output indicates that the program fibonacci is ready for debugging.
3.4. Listing Source Code Copia collegamentoCollegamento copiato negli appunti!
To view the source code of the program you are debugging:
(lldb) list
(lldb) list
As a result, the first ten lines of the source code are displayed.
To display the code from a particular line:
(lldb) list source_file_name:line_number
(lldb) list source_file_name:line_number
Additionally, lldb displays source code listing automatically in the following situations:
-
Before you start the execution of the program you are debugging,
lldbdisplays the first ten lines of the source code. -
Each time the execution of the program is stopped,
lldbdisplays the lines that surround the line on which the execution stops.
3.5. Using Breakpoints Copia collegamentoCollegamento copiato negli appunti!
Setting a New Breakpoint
To set a new breakpoint at a certain line:
(lldb) breakpoint source_file_name:line_number
(lldb) breakpoint source_file_name:line_number
To set a breakpoint on a certain function:
(lldb) breakpoint source_file_name:function_name
(lldb) breakpoint source_file_name:function_name
Example 3.2. Setting a New Breakpoint
This example assumes that you have successfully compiled the fibonacci.c file as shown in Example 3.1, “Running the lldb Utility on the fibonacci Binary File”
Set two breakpoints at line 10 by running the following commands:
(lldb) b 10 Breakpoint 1: where = fibonacci`main + 33 at fibonacci.c:10, address = 0x000000000040054e
(lldb) b 10
Breakpoint 1: where = fibonacci`main + 33 at fibonacci.c:10, address = 0x000000000040054e
(lldb) breakpoint set -f fibonacci.c --line 10 Breakpoint 2: where = fibonacci`main + 33 at fibonacci.c:10, address = 0x000000000040054e
(lldb) breakpoint set -f fibonacci.c --line 10
Breakpoint 2: where = fibonacci`main + 33 at fibonacci.c:10, address = 0x000000000040054e
In lldb, the command b is not an alias to breakpoint. You can use both commands to set breakpoints, but b uses a subset of the syntax supported by gdb’s break command, and breakpoint uses lldb syntax for setting breakpoints.
Listing Breakpoints
To display a list of currently set breakpoints:
(lldb) breakpoint list
(lldb) breakpoint list
Example 3.3. Listing Breakpoints
This example assumes that you have successfully followed the instructions in Example 3.2, “Setting a New Breakpoint”.
Display the list of currently set breakpoints:
Deleting Existing Breakpoints
To delete a breakpoint that is set at a certain line:
(lldb) breakpoint clear -f source_file_name -l line_number
(lldb) breakpoint clear -f source_file_name -l line_number
Example 3.4. Deleting an Existing Breakpoint
This example assumes that you have successfully compiled the fibonacci.c file.
Set a new breakpoint at line 7:
(lldb) b 7 Breakpoint 3: where = fibonacci`main + 31 at fibonacci.c:9, address = 0x000000000040054c
(lldb) b 7
Breakpoint 3: where = fibonacci`main + 31 at fibonacci.c:9, address = 0x000000000040054c
Remove this breakpoint:
(lldb) breakpoint clear -l 7 -f fibonacci.c 1 breakpoints cleared: 3: file = 'fibonacci.c', line = 7, exact_match = 0, locations = 1
(lldb) breakpoint clear -l 7 -f fibonacci.c
1 breakpoints cleared:
3: file = 'fibonacci.c', line = 7, exact_match = 0, locations = 1
3.6. Starting Execution Copia collegamentoCollegamento copiato negli appunti!
To start an execution of the program you are debugging:
(lldb) run
(lldb) run
If the program accepts command-line arguments, you can provide them as arguments to the run command:
(lldb) run argument …
(lldb) run argument …
The execution stops when the first breakpoint is reached, when an error occurs, or when the program terminates.
Example 3.5. Executing the fibonacci Binary File in lldb
This example assumes that you have successfully followed the instructions in Example 3.2, “Setting a New Breakpoint”.
Execute the fibonacci binary file in lldb:
Execution of the program stops at the breakpoint set in Example 3.2, “Setting a New Breakpoint”.
3.7. Displaying Current Program Data Copia collegamentoCollegamento copiato negli appunti!
The lldb tool enables you to display data relevant to the program state, including:
- Variables of any complexity
- Any valid expressions
- Function call return values
The common usage is to display the value of a variable. To display the current value of a certain variable:
(lldb) print variable_name
(lldb) print variable_name
Example 3.6. Displaying the Current Values of Variables
This example assumes that you have successfully followed the instructions in Example 3.5, “Executing the fibonacci Binary File in lldb”. Execution of the fibonacci binary stopped after reaching the breakpoint at line 10.
Display the current values of variables a and b:
(lldb) print a $0 = 0 (lldb) print b $1 = 1
(lldb) print a
$0 = 0
(lldb) print b
$1 = 1
3.8. Continuing Execution after a Breakpoint Copia collegamentoCollegamento copiato negli appunti!
To resume the execution of the program you are debugging after it reached a breakpoint:
(lldb) continue
(lldb) continue
The execution stops again when it reaches another breakpoint.
To skip a certain number of breakpoints, typically when you are debugging a loop, run the continue command in the following form:
(lldb) continue -i number_of_breakpoints_to_skip
(lldb) continue -i number_of_breakpoints_to_skip
If the breakpoint is set on a loop, in order to skip the whole loop, you will have to set the number_of_breakpoints_to_skip to match the loop iteration count.
The lldb tool enables you to execute a single line of code from the current line pointer with step:
(lldb) step
(lldb) step
To execute a certain number of lines:
(lldb) step -c number
(lldb) step -c number
Example 3.7. Continuing the Execution of the fibonacci Binary File after a Breakpoint
This example assumes that you have successfully followed the instructions in Example 3.5, “Executing the fibonacci Binary File in lldb”. The execution of the fibonacci binary stopped after reaching the breakpoint at line 10.
Resume the execution:
The execution stops the next time it reaches a breakpoint. (In this case it is the same breakpoint.) Execute the next three lines of code:
Verify the current value of the sum variable:
(lldb) print sum $2 = 2
(lldb) print sum
$2 = 2
3.9. Additional Resources Copia collegamentoCollegamento copiato negli appunti!
A detailed description of the lldb debugger and all its features is beyond the scope of this book. For more information, see the resources listed below.
Online Documentation
- lldb Tutorial — The official lldb tutorial.
- gdb to lldb command map — A list of GDB commands and their lldb equivalents.
See Also
- Chapter 1, Clang and LLVM Toolset — An overview of Clang and LLVM Toolset and more information on how to install it.
Chapter 4. Container Image with Clang and LLVM Toolset for RHEL 7 Copia collegamentoCollegamento copiato negli appunti!
The Clang and LLVM Toolset is available as a container image which can be downloaded from Red Hat Container Registry.
4.1. Image Contents Copia collegamentoCollegamento copiato negli appunti!
The devtools/llvm-toolset-7.0-rhel7 image provides content corresponding to the following packages:
| Component | Version | Package |
|---|---|---|
|
| 7.0.1 | llvm-toolset-7.0-llvm |
|
| 7.0.1 | llvm-toolset-7.0-clang |
|
| 7.0.1 | llvm-toolset-7.0-lldb |
|
| 7.0.1 | llvm-toolset-7.0-compiler-rt |
|
| 7.0.1 | llvm-toolset-7.0-libomp |
|
| 3.6.2 | llvm-toolset-7.0-cmake |
|
| 0.7.1 | llvm-toolset-7.0-python-lit |
4.2. Access to the Image Copia collegamentoCollegamento copiato negli appunti!
To pull the devtools/llvm-toolset-7.0-rhel7 image, run the following command as root:
podman pull registry.access.redhat.com/devtools/llvm-toolset-7.0-rhel7
# podman pull registry.access.redhat.com/devtools/llvm-toolset-7.0-rhel7
4.3. Additional Resources Copia collegamentoCollegamento copiato negli appunti!
- Clang and LLVM Toolset 7.0.1 - entry in the Red Hat Container Catalog
- Using Red Hat Software Collections Container Images
Chapter 5. Changes in Clang and LLVM Toolset in Red Hat Developer Tools 2019.1 Copia collegamentoCollegamento copiato negli appunti!
This chapter lists some notable changes in Clang and LLVM Toolset since its previous release.
5.1. LLVM Copia collegamentoCollegamento copiato negli appunti!
LLVM has been updated from version 6.0.1 to 7.0.1.
For more information, see the LLVM 7.0.0 Release Notes.
5.2. clang Copia collegamentoCollegamento copiato negli appunti!
clang has been updated from version 6.0.1 to 7.0.1.
For more information, see the Clang 7.0.0 Release Notes.