0

我有一个文件格式为“PA-RISC2.0 共享可执行文件”的二进制文件。并通过运行此二进制文件进行核心转储。我有堆栈跟踪。为了获得更多信息,我试图提取符号表并将其加载到 gdb 会话中。

问题是我无法提取符号表 PA-RISC2.0 SOM 文件格式。命令 'odump' 和 'nm' 以 ascii 文本输出符号表,gdb 无法加载该符号表。

在 Linux 中,对于 ELF 文件格式,可以使用 'objcopy --keep-only-debug' 来提取符号表。

有没有办法从上述文件格式的可执行文件中提取符号表。

操作系统为 HP-UX 11i

提前致谢。

4

1 回答 1

0

有没有办法从上述文件格式的可执行文件中提取符号表。

您的问题似乎基于错误的前提——以某种方式从可执行文件中提取符号表信息将为 GDB 提供比 GDB 本身能够从可执行文件中提取的信息更多的信息。它不会

objcopy --keep-only-debug您想要保留调试符号但想要将剥离的可执行文件发送给客户时,它是可用的。当您有一个调试可执行文件和一个要调试的核心转储时,它没有用。

更新:

在 gdb 中,如果我能够加载符号表,我可以获得局部变量的值,如果我没有的话,这是不可能的。

是的,但是您不需要为此从可执行文件中提取符号表到单独的文件中——GDB 将直接从可执行文件中加载符号表无需任何额外步骤。

我怀疑您没有正确调用 GDB。不要这样做:gdb -c core。改为这样做:gdb /path/to/a.out /path/to/core.

更新 2:

是的,我愿意gdb <binary> <core>

在这种情况下,也许您错过了pxdb预处理步骤?HP-UX 版本的 GDB 会自动运行/opt/langtools/bin/pxdb以将调试信息转换为 GDB 可以理解的格式。但也许你使用的 GDB 太旧了,或者你的系统没有/opt/langtools/bin/pxdb安装?

于 2012-09-08T03:27:54.153 回答