GDB CoreFile不查看功能参数

gdb corefile not see function parameters

本文关键字:功能 参数 CoreFile GDB      更新时间:2023-10-16

我的应用程序由于未知的例外而崩溃(我的C 代码在某些条件下抛出了无人例外)。我正在尝试将Corefile GDB。二进制图书馆是"不条纹的"。并且堆栈跟踪显示了抛出未被发现的异常的功能(我的代码),但是当我尝试打印函数参数时,我总是"在当前上下文中没有符号xxx"。信息args还返回"无符号表信息"。

任何人都可以阐明为什么?是由于未被发现的例外情况而放松/破坏了堆栈吗?

谢谢弗兰克

您的二进制缺乏调试信息。

如果您使用gcc构建它,并且想要调试您已经拥有的core(例如,如果很难重现崩溃),则您可以通过使用重建二进制恰好相同的源和命令行,将-g添加到编译和链接命令中。(注意:您必须使用相同的编译线;用-g替换-O2不会。)

如果崩溃不难复制,只需使用-g -O0重建二进制文件,在GDB下运行并享受"简单"调试。

二进制图书馆是"不裁员"。

这并不意味着您认为这意味着什么。未剥离意味着符号表仍存在于二进制中。

GDB将读取此符号表,并使用它将地址范围映射到功能名称。

但是,要恢复本地变量和参数的名称和值,您必须使用调试信息来编译(这是-g Flag对大多数编译器所做的)。