GDB调试程序的方式
1 调试尚未执行的程序
2 调试正在执行的程序
在某些情况下,我们可能想调试一个当前已经启动的程序,那么需要事先找到该程序运行所对应的进程号PID
可以通过以下执行命令获取:pidof 程序名
或 ps -aux | grep 程序名
获取到程序运行所对应的进程号PID后,启动gdb
方法1:
启动时加上对应的参数:gdb -p PID
或 gdb -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) | 终止调试 |