深圳网站建设认准乐云,品牌网站建设维护,合肥做网站公,大连零基础网站建设教学培训gdb常用调试命令概览和说明 run命令
在默认情况下#xff0c;gdbfilename只是attach到一个调试文件#xff0c;并没有启动这个程序#xff0c;我们需要输入run命令启动这个程序#xff08;run命令被简写成r#xff09;。如果程序已经启动#xff0c;则再次输入 run 命令…gdb常用调试命令概览和说明 run命令
在默认情况下gdbfilename只是attach到一个调试文件并没有启动这个程序我们需要输入run命令启动这个程序run命令被简写成r。如果程序已经启动则再次输入 run 命令就会重启程序。
continue命令
在程序触发断点或者使用 CtrlC 组合键中断后如果我们想让程序继续运行则只需输入 continue 命令即可简写成 c。当然如果通过 continue 命令让程序在继续运行的过程中触发设置的程序断点则程序会在断点处中断。
break命令
break 命令即我们添加断点的命令可以将其简写成 b。
##在functionname函数的入口处添加断点
break functionname
##在当前文件行号为LineNo的地方添加一个断点
break LineNo
##在filename 文件行号为LineNo的地方添加一个断点
break filename:LineNo
tbreak命令
break 命令用于添加一个永久断点tbreak 命令用于添加一个临时临时断点。
backtrace与frame命令
backtrace 可简写成 bt用于查看当前所在线程的调用堆栈。如果我们想切换到其他堆栈处则可以使用frame命令。frame命令可被简写成f。
frame 堆栈编号
info break、enable、disable、delete命令
在程序中加了很多断点以后若想查看加了哪些断点则可以使用info break命令
如果我们想禁用某个断点则使用 disable 断点编号就可以禁用这个断点了被禁用的断点不会再被触发被禁用的断点可以使用enable断点编号并重新开启。
如果disable和enable命令不加断点编号则分别表示禁用和启用所有断点
使用delete编号可以删除某个断点。如果输入delete时不加命令号则表示删除所有断点。
list命令
list命令用于查看当前断点附近的代码可以简写成l。
list命令即list加号可以从当前代码位置向下显示10行代码向文件末尾方向。list-命令即list 减号可以从当前代码位置向上显示10行代码往文件开始方向。
print与ptype命令
print命令可以被简写成 p。通过 print命令可以在调试过程中方便地查看变量的值也可以修改当前内存中的变量值。通过 print命令不仅可以输出变量的值也可以输出特定表达式的计算结果甚至可以输出一些函数的执行结果。
通过 print命令不仅可以输出表达式的结果还可以修改变量的值
info与thread命令
info命令是一个复合指令可以用来查看当前进程所有线程的运行情况。
info命令还可以用来查看当前函数的参数值组合命令是info args。
next、step、until、finish、return、jump命令
next命令可被简写为nnext命令的调试术语叫“单步步过step over”即遇到函数调用时不进入函数体内部而是直接跳过。
step命令就是“单步步入step into”顾名思义就是遇到函数调用时进入函数内部。step可被简写为 s。
return命令用于结束执行当前函数同时指定该函数的返回值
finish命令用于执行完整的函数体然后正常返回到上层调用中
until 命令可被简写为u我们使用这个命令让程序运行到指定的行停下来
jump命令的基本用法如下
jump location
location可以是程序的行号或者函数的地址jump会让程序执行流跳转到指定的位置执行其行为也是不可控的
在gdb命令行界面直接按下回车键默认是将最近一条命令重新执行一遍 set args与show args命令 很多程序都需要我们传递命令行参数。在gdb调试中使用gdb filename args这种形式给被调试的程序传递命令行参数是行不通的。正确的做法是在用gdb attach程序后使用run 命令之前使用 set args 命令行参数来指定被调试程序的命令行参数。可以通过show args查看命令行参数是否设置成功。
如果在单个命令行参数之间有空格则可以使用引号将参数包裹起来。
如果想清除已经设置好的命令行参数则使用set args不加任何参数即可。
watch命令 watch是一个强大的命令可以用来监视一个变量或者一段内存当这个变量或者该内存处的值发生变化时gdb就会中断。监视某个变量或者某个内存地址会产生一个观察点watch point。
需要注意的是当设置的观察点是一个局部变量时局部变量失效后观察点也会失效。
display命令
display 命令用于监视变量或者内存的值每次 gdb 中断都会自动输出这些被监视变量或内存的值。
display命令的使用格式是display 变量名/内存地址/寄存器名。
我们可以使用info display查看当前已经监视了哪些值使用delete display清除全部被监视的变量使用delete display 编号移除对指定变量的监视。
dir命令
可执行程序崩溃我们用gdb调试core文件时gdb可能会提示“No such file or directory”。
gcc/g编译出来的可执行程序并不包含完整的源码-g 只是加了一个可执行程序与源码之间的位置映射关系我们可以通过dir命令重新定位这种关系。
##加一个源文件路径到当前路径的前面指定多个路径可以使用“”
dir SourcePath:SourcePath2:SourcePath3
SourcePath1、SourcePath2、SourcePath3 指的就是需要设置的源码目录gdb 会依次到这些目录下搜索相应的源文件。
如果要查看当前设置了哪些源码搜索路径则可以使用show dir命令。
dir命令不加参数时表示清空当前已设置的源码搜索路径。