gdb调试

查看本机是否安装了gdb:gdb --version函数

若是没有安装能够使用apt-get install gdb安装gdb测试

(1)调试一个简单的cpp文件:spa

test.cpp文件:调试

#include<stdio.h>get

int main()io

{编译

  int a = 5;test

  int b = 6;变量

  int c = a+b;打包

  printf("the number is %d\n",c);

}

要调试这个cpp文件,在用g++编译的时候须要添加一个-g的参数。首先编译这个文件:g++ -g -o test test.cpp,这样打包出来的test文件才能够用gdb调试,若是没有-g参数,打包出来的文件是不能调试的。

使用gdb调试打包出来的test文件:gdb test

而后机器会等待你输出命令,输入b 7,表示在第7行设置一个断点,这里你能够设置多个断点。而后输入run,程序会运行到你设置的第一个断点处停下来。这个时候你能够用print命令来打印出你想要查看的变量的值,如print(a),在测试这里会输出5。

若是要继续运行,能够再次使用run,会运行到下一个断点处停下。使用next,表示代码往下运行一行,若是是调用函数不会进入函数内部。使用step,也是往下运行一行,若是遇到函数调用则进入到函数的内部。

(2)若是要调试用CMake打包出来的程序,须要要CMakeList.txt文件中添加下面这几条语句:

SET(CMAKE_BUILD_TYPE "Debug")

SET(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g2 -ggdb"

SET(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall")

(3)编译的时候可能包含了不少其余的cpp文件,若是要在gdb调试的时候在其余的文件中加入断点的话,使用这样的格式:b test1.cpp:20(表示将断点加载引用的test1.cpp文件的第20行)

(4)在调试须要输入参数的程序的时候,先gdb test,而后set args 参数,而后设断点......便可

相关文章
相关标签/搜索