HP PA-RISC在gdb中加载符号表

时间:2012-09-07 12:57:18

标签: gdb debug-symbols

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

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

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

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

操作系统是HP-UX 11i

提前致谢。

1 个答案:

答案 0 :(得分: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