gdb(三)查看源代码和栈信息

一 查看源代码:

(1)list命令打印程序源代码:

*list <linenum>:显示程序第linenum行周围的源程序。

*list <function>:显示函数名为function的函数的源代码。

*list:显示当前行后面的源程序。

*list +:显示当前行后面的源程序。

*list -:显示当前行前面的源程序。

*list <first> <last>:显示从first到last行之间的源代码。

*list    ,<last>:显示当前行到last行之间的源代码。

*list <first>,:显示first到当前行的源代码。

*list <filename:linenum>:哪个文件哪一行。

*list <filename:function>:哪个文件的哪个函数。

*list <+/-offset>:当前行的正负偏移量。


(2)搜索源代码:

*forward-search <regexp>或search <regexp>:向下搜索匹配正则表达式的语句。

*reverse-search <regexp>:向前搜索匹配正则表达式的语句。


(3)指定源文件的路径:

*directory <dirname...>:加入一个源文件路径到当前路径前面。

*show directories:显示定义的源文件搜索路径。

*directory:清除所有自定义的源文件搜索路径信息。


(4)源代码的内存:

*info line后面跟:"行号","文件名:行号","函数名","文件名:函数名"。打印出所指定源代码在运行时的内存地址。

如:info line func

*disassemble:查看源代码的当前执行的机器码。

如:disassemble func。


二 查看栈信息:

(1)backtrace或bt(简写):打印当前函数的调用栈的所有信息。

*如下图:


函数的调用信息:main->print2->print1。


*backtrace <n>:打印栈顶上n层的栈消息。

*backtrace <-n>:打印栈底下n层的栈消息。


(2)frame或f:查看栈上某一层的消息(包括打印当前栈层消息)。

*frame <n>:n是一个从0开始的整数,是栈中的层编号,不打n,显示当前栈层。

*up <n>:表示向栈上面移动n层的,可以不打n,表示向上移动一层。

*down <n>:表示向栈下面移动n层的,可以不打n,表示向下移动一层。

*info frame:打印更为详细的当前栈层的消息。


(3)打印参数、变量和异常:

*info args:打印当前函数的参数名和其值。

*info locals:打印当前函数中所有局部变量以及其值。

*info catch:打印当前函数中的异常处理消息。








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值