GDB是什么
Gdb 是Linux 调试代码的一个工具。
安装:
apt install gdb -y
第一次使用:
//首先编译时候要编译出debug需要的信息到可执行文件中。
# g++ -g hello.cpp //-g 是生产debug 信息
//使用gdb运行可执行文件
# gdb a.out
//显示文件信息 l
(gdb) l
//下面是显示的文件信息:
1 #include <iostream>
2
3 int main()
4 {
5 std::cout<<"Hello world"<<std::endl;
6 return 0;
7 }
//添加断点:
(gdb) break 5
Breakpoint 1 at 0x106e8: file hello.cpp, line 5.
//开始运行:
(gdb) run
Starting program: /home/pi/code/test-cpp-helloworld/a.out
Breakpoint 1, main () at hello.cpp:5
5 std::cout<<"Hello world"<<std::endl;
//下一步
(gdb) next
Hello world
6 return 0;
//继续下一步
(gdb) next
7 }
//好了到此结束吧 按q退出。
更新一下=====================================
第n次使用
虽然已经用了还算挺久,但是还没有可以得心应手的程度记录一下使用的命令吧。
上次使用的命令
l && run && break && next
发现都是用的完整的单词,其实可以使用缩写如:
l && r && b && n && bt && fr && c && p
我就把最常用的几个打了出来,用&&
分割请不用在意这个分隔符。
l
对应 list
显示源码, 按空格或者继续输入l
就一直往下显示,但是有时候想看前面的代码就需要输入l-
r
对应run
从头运行,第一次必须使用r
来运行程序,如果程序需要参数,也是在这里加的,而不是gdb application
时候加。如r config.json
。r
重新运行程序后我们设置的断点已经有效。
b
对应 break
设置断点,有几种方式,直接按b
就是在当前位置加断点,b file_name.cpp:10
文件加:
就是在指定文件的n行加断点,还有一个就是b main
程序入口加断点。
n
对应 next
是单步运行
bt
对应 backtrace
就是堆栈的意思
fr
对应 frame
我看到还可以按f
不过我没试过,我每次都是fr n
,切换对应层的堆栈。
c
对应 continue
就是继续意思
p
我猜是对应 print
输出的意思。一般p
后面加变量或者方法。
===============更新结束
过程中参考了一个博客:[优快云-使用gdb调试程序完全教程1](https://blog.youkuaiyun.com/gatieme/article/details/51671430)
[优快云 使用gdb调试程序完全教程]https://blog.youkuaiyun.com/gatieme/article/details/51671430 ↩︎