编程工具系列之 ------使用GDB的堆栈跟踪功能
2014-08-27 19:05
246 查看
源 :http://www.cnblogs.com/frydsh/p/3378681.html
编程工具系列之一------使用GDB的堆栈跟踪功能
在调试程序的过程中,查看程序的函数调用堆栈是一项最基本的任务,几乎所有的图形调试器都支持这项特性。
GDB调试器当然也支持这一特性,但是功能更加灵活和丰富。
GDB将当前函数的栈帧编号为0,为外层函数的栈帧依次加1,这些编号将成为一些GDB命令的参数,以指明将要操作的是哪一个函数的栈帧。
GDB还支持使用Address作为栈帧的标识符,可在栈帧编号被破坏的情况下使用。
1.在栈帧之间切换
GDB中有很多针对调用堆栈的命令,都需要一个目标栈帧,例如打印局部变量值的命令。
frame args 将当前栈帧设置为args(编号或Address)指定的栈帧,并打印该栈帧的简要信息。
select-frame args 与frame args相同,但是不打印栈帧信息。
up n 向上回退n个栈帧(更外层),n默认为1.
down n 向下前进n个栈帧(更内层),n默认为1.
up-silently n 与up n相同,但是不打印信息。
down-silently n 与down n相同,但是不打印信息。
2.打印栈帧信息(不移动栈帧)
frame 打印当前栈帧的简要信息。
info frame 打印当前栈帧的详细信息。
info frame args 打印指定栈帧的详细信息。
info args 打印函数参数信息。
info locals 打印当前可访问的局部变量的信息。
3.打印调用堆栈
backtrace 打印全部栈帧的简要信息,按Ctrl-c可终止打印。
backtrace n 打印最内层的n个栈帧的简要信息。
backtrace -n 打印最外层的n个栈帧的简要信息。
backtrace full 打印全部栈帧的详细信息。
backtrace full n 打印最内层的n个栈帧的详细信息。
backtrace full -n 打印最外层的n个栈帧的详细信息。
4.一些配置项
set backtrace past-main on 对调用堆栈的打印可越过main函数。
set backtrace past-main off 对调用堆栈的打印止步于main函数。
编程工具系列之一------使用GDB的堆栈跟踪功能
在调试程序的过程中,查看程序的函数调用堆栈是一项最基本的任务,几乎所有的图形调试器都支持这项特性。
GDB调试器当然也支持这一特性,但是功能更加灵活和丰富。
GDB将当前函数的栈帧编号为0,为外层函数的栈帧依次加1,这些编号将成为一些GDB命令的参数,以指明将要操作的是哪一个函数的栈帧。
GDB还支持使用Address作为栈帧的标识符,可在栈帧编号被破坏的情况下使用。
1.在栈帧之间切换
GDB中有很多针对调用堆栈的命令,都需要一个目标栈帧,例如打印局部变量值的命令。
frame args 将当前栈帧设置为args(编号或Address)指定的栈帧,并打印该栈帧的简要信息。
select-frame args 与frame args相同,但是不打印栈帧信息。
up n 向上回退n个栈帧(更外层),n默认为1.
down n 向下前进n个栈帧(更内层),n默认为1.
up-silently n 与up n相同,但是不打印信息。
down-silently n 与down n相同,但是不打印信息。
2.打印栈帧信息(不移动栈帧)
frame 打印当前栈帧的简要信息。
info frame 打印当前栈帧的详细信息。
info frame args 打印指定栈帧的详细信息。
info args 打印函数参数信息。
info locals 打印当前可访问的局部变量的信息。
3.打印调用堆栈
backtrace 打印全部栈帧的简要信息,按Ctrl-c可终止打印。
backtrace n 打印最内层的n个栈帧的简要信息。
backtrace -n 打印最外层的n个栈帧的简要信息。
backtrace full 打印全部栈帧的详细信息。
backtrace full n 打印最内层的n个栈帧的详细信息。
backtrace full -n 打印最外层的n个栈帧的详细信息。
4.一些配置项
set backtrace past-main on 对调用堆栈的打印可越过main函数。
set backtrace past-main off 对调用堆栈的打印止步于main函数。
相关文章推荐
- 编程工具系列之一------使用GDB的堆栈跟踪功能
- 编程工具系列之一------使用GDB的堆栈跟踪功能
- 编程工具系列之二------使用GDB的源代码查看功能
- gdb的使用(二) 堆栈跟踪、core文件、连接到其它进程
- [转]Ultra Fractal教程系列11——学习基础技巧03——使用Explore(探索)功能
- Android系列教程之七:EditText使用详解-包含很多教程上看不到的功能演
- MSDN网络广播预告:.NET 4.0中的新特性系列课程(5):追踪CLR——使用Windows事件跟踪(ETW)观察公共语言运行时CLR(Level 300)
- DNS中GlobalNames区域图解使用---Windows2008新功能系列之五 推荐
- 在Linux下使用arm-elf-gdb调试lm3s系列
- [转]Ultra Fractal教程系列50——动画功能的使用08——添加淡入动画效果
- Android系列教程之七:EditText使用详解-包含很多教程上看不到的功能演示
- ubuntu linux 上使用索尼sz 6/7系列双显卡功能
- Android系列教程之七:EditText使用详解-包含很多教程上看不到的功能演示
- [转]Ultra Fractal教程系列47——动画功能的使用05——动画的拓展
- [转]Ultra Fractal教程系列48——动画功能的使用06——时间轴工具的使用
- [转]Ultra Fractal教程系列43——动画功能的使用01——创建动画分形案例
- MSDN网络广播预告:.NET 4.0中的新特性系列课程(5):追踪CLR——使用Windows事件跟踪(ETW)观察公共语言运行时CLR(Level 300)
- GDB 使用系列(2)
- WEB打印系列教程之二--使用IE的打印功能进行一般的网页打印
- [转]Ultra Fractal教程系列45——动画功能的使用03——播放动画