赞
踩
1、GDB介绍
GDB(GNU Debugger)是GCC的调试工具。其功能强大,现描述如下:
2、编译
如果要用GDB调试程序我们必须在编译时要把调试信息加到可执行文件中,在利用编译器(cc/gcc/g++)编译程序时加上 -g 参数
gcc -g HelloWorld.c -o HelloWorld
g++ -g HelloWorld.cpp -o HelloWorld
如果没有-g参数,你将看不见程序的函数名、变量名,而全是运行时的内存地址。
3、GDB 的启动命令
命令 | 命令缩写 | 命令说明 |
list | l | 显示多行源代码 |
break | b | 设置断点,程序运行到断点的位置会停下来 |
info | i | 描述程序的状态 |
run | r | 开始运行程序 |
display | disp | 跟踪查看某个变量,每次停下来都显示它的值 |
step | s | 执行下一条语句,如果该语句为函数调用,则进入函数执行其中的第一条语句 |
next | n | 执行下一条语句,如果该语句为函数调用,不会进入函数内部执行(即不会一步步地调试函数内部语句) |
| p | 打印内部变量值 |
continue | c | 继续程序的运行,直到遇到下一个断点 |
set var name=v | 设置变量的值 | |
start | st | 开始执行程序,在main函数的第一条语句前面停下来 |
file | 装入需要调试的程序 | |
kill | k | 终止正在调试的程序 |
watch | 监视变量值的变化 | |
backtrace | bt | 产看函数调用信息(堆栈) |
frame | f | 查看栈帧 |
quit | q | 退出GDB环境 |
4、启动带参数的程序
gdb --args ./demo arg1 arg2....
5、基本应用
6、 gdb XXXX core.18164
bt
推荐一个详细的“GDB调试命令详解”地址希望可以学的更多:
1、https://blog.csdn.net/Linux7985/article/details/52399439
2、https://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/gdb.html
扩展:
- linux提示符
- 1. GDB进入正在运行的进程
- gdb 可执行文件 core文件
- gdb -p pid
-
- GDB提示符
- 1. 查看调用栈信息
- bt / backtrace / bt full
- frame n
- info locals
- info args
-
- 2. 查看、设置变量
- p 变量
- p 变量 = 新值
- set 变量 = 新值
-
- 3. 查看内存
- x/<n/f/u> <addr>
-
- 4. 线程调试
- info thread
- thread n

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。