旅游网站改版方案,微信公众平台可以导入wordpress,vi设计多少钱,引流推广营销gdb是linux下常用的代码调试工具#xff0c;本文记录常用命令。
被调试的应用需要使用 -g 参数进行编译#xff0c;如不确定可使用如下命令查看是否支持debug
readelf -S filename | grep debug
启动调试
gdb binFile 例如要调试sshd#xff1a; 调试带参数…gdb是linux下常用的代码调试工具本文记录常用命令。
被调试的应用需要使用 -g 参数进行编译如不确定可使用如下命令查看是否支持debug
readelf -S filename | grep debug
启动调试
gdb binFile 例如要调试sshd 调试带参数的应用
有些应用需要携带参数使用此时gdb要增加--args参数指定命令行参数属于应用如下示例--args后的参数均属于应用sshd
gdb --args /usr/sbin/sshd -f /etc/ssh/sshd_config -ddd 调试正在运行的进程
gdb --pidPID 调试进程的子进程 退出调试
输入quit 或缩写 q 进行退出
查看源码 list 列出当前文件的源代码默认列出前10行 (list 可以简写为 l) 选项 list [n], 从指定行号n开始列出该行后面的源代码 list [function_name]列出指定函数的源代码 list [sline], [eline]列出指定行号范围内的源代码比如list 10 20 显示10-20行之间的代码 list -列出上一个list命令列出的源代码的下一部分 list 列出当前行后面的源代码 如果源码是在某些库中或其他不在调试范围内的位置是查看不到的
全速运行
run 缩写 r
设置断点在某行
break linenum 缩写 b linenum
设置断点在某文件某行
break filename:linenum 缩写 b filename:linenum
设置断点在某函数
break functionName 缩写 b functionName
设置条件断点
所谓条件断点就是当满足一定条件时断点才会命中。只要代码执行到断点处普通的断点就会被命中并暂停下来而条件断点必须要满足设置的条件才能够被命中并暂停。
break functionName if a1 缩写 b functionName if a1
查看断点信息
info break 缩写 info b
使能或禁用断点
disable breakpoint_number
enable breakpoint_number breakpoint_number为断点编号可通过info b查看可在enable和disable加once参数表明禁用或使能一次
删除断点
delete breakpoint_number
设置观察点
在为变量或者一个表达式设置观察点后当该变量或者表达式的值发生变化时程序会发生中断并且在变量或者表达式发生改变的地方暂停。
watch variable
继续运行
当程序运行到断点处后会停止使用countinue继续执行直到下一次断点
countinue 缩写 ccontinue n //跳过当前断点n次单步运行
next 缩写 n //如果遇到函数不会进入函数内部会一次性执行
step 缩写 s //会进入函数内部执行
调用堆栈
backtrace 缩写 bt
返回堆栈
当进入到另一个函数体之后如果想跳出这个函数体回到调用的地方使用如下命令
finish
查看变量值
print 缩写 pprint var_name // var_name是要查看的变量名称print *arraylen // 显示数组array的前len个元素的值
print struct_name // 显示结构体struct_name的成员变量值print *pointer_name // 查看指针指向的值
print pointer_name // 查看指针本身修改变量值
set variable_name new_value
跳转
until line_number (line_number是要执行到的行号)以上只列举了部分gdb常用命令更详细的介绍可查阅gdb使用手册。