本文主要记录如何在Linux环境下用gdb对C/C++程序进行调试。
一般来讲,最普遍的方法就是通过输出信息来调试。
但是有些时候你难以定位出错的位置,如出现了segment falut
,那么调试器往往是利器。
gdb是GNU软件系统中标准的调试器,是用来调试C/C++的绝佳利器。
在编译指令中添加-g
,如
gcc -g test.c -o test
用gdb <program>
进行调试,正常读入应该能看到下面信息
Reading symbols from ./test...done.
break <linenum>
或break <function>
或b
设置断点delete
可以删除某一断点clear
可以删除所有断点通过run
/r
运行程序,后面可以添加程序命令行参数,如
(gdb) run arg1 arg2
或者直接通过set args
指令传参数
(gdb) set args arg1 arg2 ...
list
:查看源代码continue
/c
:执行到断点step
/s
:单步调试next
/n
:执行到下一行指令call <function> <args>
:调用程序中可见的函数,并传递参数backtrace
:获得函数调用信息info register <name>
或info registers
:获取寄存器信息quit
/q
:退出gdb