当gdb无法确定堆栈帧的大小时,如何使用gdb获取回溯?
我遇到了一个核心,无法从中得到回溯。我有两个问题当gdb无法确定堆栈帧的大小时,如何使用gdb获取回溯?,gdb,Gdb,我遇到了一个核心,无法从中得到回溯。我有两个问题 我能从电话中找出导致车祸的线路或车祸发生的地点吗 列出命令输出 否则怎么处理。我应该设置什么样的篱笆柱才能得到一些 有意义的数据。我尝试将其设置为0,但没有成功 (gdb)英国电信 0 0x00e67a24英寸??() 警告:GDB在0xe67a24处找不到函数的开头 GDB is unable to find the start of the function at 0xe67a24 因此无法确定该函数堆栈帧的大小。 这意味着GDB可能无法访
GDB is unable to find the start of the function at 0xe67a24
因此无法确定该函数堆栈帧的大小。
这意味着GDB可能无法访问该堆栈帧,或者
下面的框架。
此问题很可能是由无效的程序计数器或
堆栈指针。
然而,如果您认为GDB应该只在更远的地方搜索
来自0xe67a24的代码,看起来像
函数,您可以使用`set`增加搜索范围
“篱笆哨所”命令。
(gdb)当我看到这个问题时,一个解决方法是命令: x/100a$sp 这将使用符号转储堆栈,并且很可能在最近的回溯部分会出现。它仍然找不到实际的当前堆栈帧,但应该找到带有符号的最新堆栈帧 根据目标体系结构,$sp可能需要是其他的东西——不管堆栈指针是什么寄存器
对于我来说,gdb找不到调用堆栈的最常见情况是OpenGL驱动程序中的崩溃,该驱动程序不使用预期的ARM ABI调用约定。我遇到了相同的错误,结果是另一个问题的症状:我没有向gdb提供文件,因此无法构建符号表。通过
gdb filename
启动它,而不仅仅是gdb
也解决了这个问题。你能得到注册信息吗?@kumar\u m\u kiran,是的,我能得到注册信息。