1、编写CMakeLists.txt:
首先,确保你的项目根目录有一个CMakeLists.txt文件,它描述了如何构建你的项目。
例如,一个简单的CMakeLists.txt可能如下所示:
cmake_minimum_required(VERSION 3.5)
aux_source_directory(. DIR_LIB_SRCS)
add_library (collect ${DIR_LIB_SRCS})
target_link_libraries(collect utils frame handler)
2、生成构建文件:
在项目的根目录中,运行以下命令来生成构建文件(如Makefile):
mkdir build
cd build
cmake ..
这将在build目录中生成Makefile(或其他构建系统的文件)。
3、编译带有调试信息的代码:
在生成构建文件后,使用cmake的--build选项和适当的构建工具(如make)来编译你的代码,并确保启用了调试信息。这通常通过向cmake或构建工具传递-DCMAKE_BUILD_TYPE=Debug标志来完成。
cmake --build . --config Debug
或者,如果你使用make,可以这样做:
make VERBOSE=1
或者指定构建类型:
make VERBOSE=1 build_type=Debug
确保你的CMakeLists.txt支持不同的构建类型,或者你已经设置了默认构建类型为Debug。
4、启动GDB调试:
一旦你的代码被编译为带有调试信息的版本,你就可以使用GDB来调试它。
首先,确保GDB已经安装在你的系统上。然后,在命令行中运行以下命令来启动GDB并加载你的程序:
gdb ./my_program
在GDB提示符下,你可以使用各种命令来查看源代码、设置断点、单步执行等。例如,你可以使用break命令来设置一个断点
(gdb) break main
Breakpoint 1 at 0x...: file main.cpp, line 5.
然后,使用run命令来启动你的程序:
(gdb) run
Starting program: /path/to/build/my_program
当程序执行到断点处时,GDB会暂停执行,并允许你检查变量的值、单步执行代码等。