GDB调试程序的方式

1 调试尚未执行的程序

gdb 程序名

2 调试正在执行的程序

在某些情况下,我们可能想调试一个当前已经启动的程序,那么需要事先找到该程序运行所对应的进程号PID
可以通过以下执行命令获取:
pidof 程序名ps -aux | grep 程序名
获取到程序运行所对应的进程号PID后,启动gdb
方法1:
启动时加上对应的参数:gdb -p PIDgdb -pid=PID
方法2:
启动后执行:attach(at) PID

3 调试执行异常崩溃的程序

在 Linux 操作系统中,当程序执行发生异常崩溃时,系统可以将发生崩溃时的内存数据、调用堆栈情况等信息自动记录下载,并存储到一个 core 文件中,通过 GDB 调试产生的 core 文件,往往可以更快速的解决问题。
对于 core 文件的调试,GDB 的调试指令为:
gdb 程序名 core文件

GDB常用调试令

调试命令(缩写) 作用
break (b) 在源代码中设置断点
bt 查看程序的调用栈
run (r) 执行被调试的程序
continue (c) 当程序在某一断点处停止后,用该指令可以继续执行,直至遇到断点或者程序结束
next (n) 令程序一行代码一行代码的执行
step (s) 如果有调用函数,进入调用的函数内部;否则,和 next 命令的功能一样
until (u) n n 为某一行代码的行号,该命令会使程序运行至第 n 行代码处停止
list (l) 显示源程序代码的内容
finish 结束当前正在执行的函数,并在跳出函数后暂停程序的执行
quit (q) 终止调试