本人鸟蛋,由于太菜,不敢称为菜鸟,只能自称鸟蛋。以下内容全是胡扯,如有价值,纯属巧合。
Gdb的主要作用是调试一个程序,调试一个进程或者查看当程序崩溃时在执行那条语句。
为了帮助你发现程序的 bug,Gdb主要做四件事情:
1.开始运行程序并指定参数
2.设置断点,观察点等
3.当程序在断点停止时,查看程序的上下文环境(变量值,内存状况等)
4.在程序运行时,改变程序中变量的值
Gdb主要用来调试c,c++程序。使用gdb开始调试,quit退出,help获取帮助。
在gdb启动时,可以不带参数,但是最常用的是带一个或者两个参数:
gdb:不带参数。
Gdb program:带一个参数,指定可运行程序。
Gdb program core :带俩参数,指定core文件,一般当程序异常崩溃时,程序的当前文件夹会由一个core文件。
Gdb program pid:俩参数,制定进程id,可以调试一个正在运行中的程序。
下面是一些最常用的命令:
Break [file:]function \ Break [file:]num 在指定文件的指定函数或者行号处设置断点,如果不指定文件,默认为当前文件。
Run [arglist] 以指定参数运行程序,如果程序没有参数,则不用arglist,程序会一直运行到结束或者遇到断点
Start [arglist] 开始运行程序,程序停在main函数的第一条语句处。
Bt :backtrace:查看程序调用堆栈
Fr num:暂时进入某一个堆栈,可以查看相应堆栈中的数据
Print expr 打印表达式的值,当然表达式可以为程序中的变量设置新值
C(continue):从断点继续运行程序,程序将运行到下一个断点,或者程序结尾。
N(next):运行到下一行(单步调试)
S(step):进入到函数中去(单步调试)
List [file:]function/list [file:linenum 查看制定函数或者指定行号处的代码
另外基本所有命令都可以用简称或者全称,如果希望在运行时就指定程序的运行参数可以用以下命令:
Gdb -args program arglist
当在gdb命令行直接敲【回车】时,默认执行上条命令。比如查看代码,输入一个【l】,接下来可以直接敲【回车】查看代码