函数调用栈由连续的栈帧组成。每个栈帧记录一个函数调用的信息,这些信息包括函数参数,函数变量,函数运行地址。
当程序启动后,栈中只有一个帧,这个帧就是main函数的帧。我们把这个帧叫做初始化帧或者叫做最外层帧。每当一
个函数被调用,一个新帧将被建立,每当一个函数返回时,函数帧将被剔除。如果函数是个递归函数,栈中将有很多帧是
记录同一个函数的。但前执行的函数的帧被称作最深帧,这个帧是现存栈中最近被创建的帧。
在程序内部,函数栈帧用函数的地址来标记。一个帧由一定字节的内存组成,每个字节都有自己的地址 。每种类型的计
算机有个约定,用一个特殊字节的地址存放函数帧的地址。通常函数帧的地址存放在一个称作帧指针的寄存器中--$fp.
gdb 为所有存活的栈帧分配一个数字编号,最深帧的编号是0,被它调用的内个帧的编号就是1。这些编号子程序中是不
存在的,只不过时调试的时候被gdb用的。
关于函数帧的两个指令:
frame args
移动到args指定的栈帧中去,并打印选中的栈的信息。args可以时帧编号或者时帧的地址。如果没有args,则打印当前帧的信息。
select-frame args
移动到指定的帧中去,不打印信息。
分享到:
相关推荐
-
GDB调试GDB调试GDB调试GDB调试GDB调试 GDB调试GDB调试GDB调试GDB调试GDB调试
陈浩-用GDB调试程序(整理有书签).pdf+守望的个人博客-GDB调试指南(整理有书签).pdf
安装MinGW-w64 下载有的要翻墙 这了里单独下载 放到bin里就行了, , 特别是vscode运行c/c++ debug模式 "D:\\Mingw-w64\\mingw64\\bin\\gdb.exe
中文pdf 教你用gdb调试程序 GDB调试使用手册-中文pdf
官网下载最新的aarch64 gdb调试工具压缩包,有需要的可以看下
QtCreator 的调试器 适合 qt版本4.8.5 qtcreator版本2.8.0
用GDB调试程序 用GDB调试程序 用GDB调试程序 用GDB调试程序 用GDB调试程序 用GDB调试程序
通过列举linux平台下的例子,并结合gdb描述了堆栈溢的过程。
GDB提供了很多调试功能,包括设置断点、单步执行、查看变量、回溯函数调用堆栈等。通过这些功能,程序员可以有效地诊断和修复程序中的错误。 在使用GDB时,您需要在终端或控制台中启动您的程序,并使用以下命令之一...
GDB调试精粹及使用实例GDB调试精粹及使用实例GDB调试精粹及使用实例GDB调试精粹及使用实例GDB调试精粹及使用实例GDB调试精粹及使用实例GDB调试精粹及使用实例GDB调试精粹及使用实例GDB调试精粹及使用实例GDB调试精粹...
gdb调试中,具有调用关系的函数在堆栈中的关系。
gdb调试.pdf,快速GDB调试入门..........
gdb调试器的使用gdb调试器的使用gdb调试器的使用gdb调试器的使用gdb调试器的使用
GDB调试程序[陈皓] GDB调试工具指南 两个pdf文件
描述了 linux下 gdb 调试 常用的命令
是学习嵌入式的很好的资料哦!里面详细介绍了怎样用gdb调试程序,是嵌入式程序调试入门必备的资料!
可以打印map,vector等 只要 source stl-views-1.0.3.gdb
制作GDB和GDBServer,arm-linux-gdb.pdf
xtensa-esp-elf-gdb-11.2_20220823-arm-linux-gnueabi.tar