gdb查看栈帧信息

转载 2016年08月29日 15:18:37
一些查看函数调用栈信息的GDB命令:
backtrace
bt
打印当前的函数调用栈的所有信息。如:

(gdb) bt
#0 func (n=250) at tst.c:6
#1 0x08048524 in main (argc=1, argv=0xbffff674) at tst.c:30
#2 0x400409ed in __libc_start_main () from /lib/libc.so.6

从上可以看出函数的调用栈信息:__libc_start_main --> main()--> func()
backtrace
bt
n是一个正整数,表示只打印栈顶上n层的栈信息。

backtrace <-n>
bt <-n>
-n表一个负整数,表示只打印栈底下n层的栈信息。

如果你要查看某一层的信息,你需要在切换当前的栈,一般来说,程序停止时,最顶
层的栈就是当前栈,如果你要查看栈下面层的详细信息,首先要做的是切换当前栈。

frame
f
n是一个从0开始的整数,是栈中的层编号。比如:frame 0,表示栈顶,frame 1,表示栈的第二层。

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

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

上面的命令,都会打印出移动到的栈层的信息。如果你不想让其打出信息。你可以使用这三个命令:

select-frame 对应于 frame 命令。
up-silently 对应于 up 命令。
down-silently 对应于 down 命令。


查看当前栈层的信息,你可以用以下GDB命令:

frame 或 f
会打印出这些信息:栈的层编号,当前的函数名,函数参数值,函数所在文件及行号,函数执行到的语句。

info frame
info f

这个命令会打印出更为详细的当前栈层的信息,只不过,大多数都是运行时的内内
地址。比如:函数地址,调用函数的地址,被调用函数的地址,目前的函数是由什么
样的程序语言写成的、函数参数地址及值、局部变量的地址等等。如:

(gdb) info f
Stack level 0, frame at 0xbffff5d4:
eip = 0x804845d in func (tst.c:6); saved eip 0x8048524
called by frame at 0xbffff60c
source language c.
Arglist at 0xbffff5d4, args: n=250
Locals at 0xbffff5d4, Previous frame's sp is 0x0
Saved registers:
ebp at 0xbffff5d4, eip at 0xbffff5d8

info args
打印出当前函数的参数名及其值。

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

info catch
打印出当前的函数中的异常处理信息。

相关文章推荐

gdb 调试coredump文件中烂掉的栈帧的方法____本人备注

原文地址::http://blog.csdn.net/muclenerd/article/details/48005171 相关文章 1、无符号和栈破坏情况下coredump的分析方法----ht...

支持栈帧(BackTrace)的PSPLINK

  • 2013年05月29日 00:57
  • 117KB
  • 下载

堆栈、栈帧与函数调用过程分析

  • 2011年11月13日 09:37
  • 363KB
  • 下载

gdb 查看堆栈信息、加载core文件、连接到其它进程

当程序被停住了,你需要做的第一件事就是查看程序是在哪里停住的。当你的程序调用了一个函数,函数的地址,函数参数,函数内的局部变量都会被压入“栈”(Stack)中。你可以用GDB命令来查看当前的栈中的信息...

GDB调试中查看栈信息

查看栈信息 当程序被停住了,你需要做的第一件事就是查看程序是在哪里停住的。当你的程序调用了一个函数,函数的地址,函数参数,函数内的局部变量都会被压入“栈”(Stack)中。你可以用GDB命令来查看当...

Linux 如何使用gdb 查看core堆栈信息

core dump 一般是在segmentation fault(段错误)的情况下产生的文件,需要通过ulimit来设置才会得到的。 调试的话输入: gdb filename core ...

Linux程序宕掉后如何通过gdb查看出错信息

我们在编写服务端程序的时候,由于多线程并且环境复杂,程序可能在不确定条件的情况下宕掉,还不好重新,这是我们如何获取程序的出错信息,一种方法通过打日志,有时候一些错误日志也不能体现出来,这时就用到我们的...

Linux中gdb 查看core堆栈信息

core dump 一般是在segmentation fault(段错误)的情况下产生的文件,需要通过ulimit来设置才会得到的。 调试的话输入: gdb filename core f...

为GDB编写一个智能调试信息浏览器,类似VS的watch多级结构查看功能

使用CODEBLOCKS中,发现WATCH窗口的结构体数据都是指针形式,而且下下级信息难以查看,严重影响调试信息的阅读,发现https://sourceware.org/gdb/onlinedocs/...
  • yfz0574
  • yfz0574
  • 2015年04月02日 10:09
  • 171

gdb 查看栈信息

《Linux环境下C编程指南(第二版)》p86 查看栈信息相关的命令 1,打印当前的函数调用栈的所有信息 backtrace或者bt 2,只打印栈顶上n层的栈信息 backtrace ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:gdb查看栈帧信息
举报原因:
原因补充:

(最多只允许输入30个字)