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 ↩︎

本文详细介绍GDB工具的安装与使用,包括如何通过GDB进行代码调试,设置断点,单步执行,查看变量等关键操作。同时提供了常用命令的快捷方式,帮助开发者更高效地进行调试。

被折叠的 条评论
为什么被折叠?



