gdb工具使用

参考文档

对于C程序来说,需要在编译时加上-g参数,保留调试信息,否则不能使用GDB进行调试

1
gcc -g test.c -o a.out
1
gdb a.out

gdb使用条件

使用 file 命令 查看 是否带有调试信息

1
2
$ file helloWorld
helloWorld: (省略前面内容) stripped

后是stripped,则说明该文件的符号表信息和调试信息已被去除,不能使用gdb调试

查看进程的pid

查看pid的两种方法

  1. ps -ef | grep 进程名字
  2. pidof 进程名

gdb 直接接入进程名

1
2
gdb 
(gdb) attach  28890
1
gdb a.out

命令行参数

命令 解释
p var print 打印
p /x var 16进程打印变量
q 退出
b main 在main函数打上 break point
b /home/user/main.c:13 在main.c 13行上打上断点
r run 【停在断点处】
n next 【单步,不进函数体】
回车键 执行上一次输入的命令
s step into 【进程函数里面】
k kill 杀掉当前进程
info b 查看所有断点
d 1 删除 1号断点【输入编号,和上面的命令一起使用】
c continue,直接跳到下一个断点
bt backtrace 【查看函数调用栈】
watch i 监听 i变量
info r 查看所有寄存器的值【register】
layout src 查看源代码调试
layout asm 查看汇编 【按 si单步跳转】
si 注意,在layout asm 模式下使用,表示进入下一行汇编指令