常用的简单的Linux下gdb调试命令:
首先调试版本的文件是二进制可执行文件,可以运行
gcc -g -o main main.c 这是编译成可调试文件
gdb main 进入调试
要退出gdb,使用quit命令 也可以一个q
查看源码:
列出程序的源码(默认每次显示10行)-----------list/l
显示以“行号”为中心的前后10行代码-----------list 行号
显示“函数名”所在函数的源代码----------------list 函数名
断点:
进入后 设置断点在任一位置停止程序的运行 ,查看程序运行时所作的事情,找出程序的问题之所在 ------------break/b 行数n
b func---在函数func()入口处设置断点
查看断点-------------info breakpoints (info b)
删除断点-------------delete 断点号
暂停/开启断点--------disable/enable 断点号
删除所有断点---------delete breakpoints
运行:
运行 在断点处会停止---------------r/run
继续执行 到下一个断点-------------c/continue
单步跟踪(不进函数体内)------------n/next
单步跟踪(进入函数体内)------------s/step
运行程序,直到当前函数完成返回,并打印函数返回时的堆栈地址和返回值及参数值等信息--------------------------------finish
打印:
打印变量值-----------p/print
显示a的值------------p a
查询运行信息:
当前运行的堆栈列表------where/bt
显示当前调用的堆栈------bt backtrace
指定运行时的参数---------set 参数
查看程序的是否在运行,进程号,被暂停的原因----info program
打印目前线程的信息和编号----------info threads
切换线程1 -------- t/thread 1
详细的可阅读:Linux下GDB详解
(有详细命令以及代码举例以及多进程多线程调试)