gdb常用命令总结
时间:2022-03-14 02:31
1: 对于在应用程序中加入参数进行调试的方法:
备常用命令:
1.常看源码:list(l)
list <linenumber> 行号
list <+offset> 当前行号的正偏移
list <-offset> 当前行号的负偏移
list <filename:linenumber> 哪个文件的哪一行
list <function> 函数名
list <filename:function> 文件的哪个函数
list <*address> 程序运行时语句在内存中的地址
2.设置断点:break(b)
break <function> 指定函数断点
break <linenumber> 指定行号断点
break <+offset/-offset> 当前行号的正/负偏移
break <filename:linenumber> 哪个文件的哪一行
break <*address> 运行中的内存地址
break 不带参数,下一条指令停止处
break ... if <condition> 在运行中,当condition条件满足时停止。
eg. break if i=100 //当i=100时,立即停止
break foo if i=100 //断点设置在foo中,断点条件是i-100, 一点在函数foo中,i的值等于100,被停止。
3.查看信息:info
info break 查看断点信息
info locals 打印出当前函数中所有局部变量及其值
info stack 查看栈中信息
info frame 更详细的栈层地址信息
info args 查看参数信息
info registers/info all-registers 查看(所有)寄存器信息
info sources 查看项目的源代码信息
4.维护breakpoint:disable/enable/clear/delete
disable(dis) 【breakpoints】 【range...】
如果没有参数,则停止所有的断点,
enable 【breakpoints】【range】
clear <function>/<filename:function>/<linenum>/<filename:linenum>
清楚已定义的停止点
delete [breakpoints] [ranga...]
删除指定的断点
5.恢复程序运行:continue(c)
6.until和finish
until 跳出循环比较有用
help finish
Execute until selected stack frame returns.
Upon return, the value returned is printed and put in the value history.
finish 用来跳出函数比较有用。
help until
Execute until the program reaches a source line greater than the current
or a specified location (same args as break command) within the current frame