如何将非压缩二进制文件中的符号赋给gdb?

如何将非压缩二进制文件中的符号赋给gdb?,gdb,Gdb,我有: 正在运行的剥离二进制文件 gdb 非压缩二进制 我可以连接到正在运行的剥离二进制(gdp-ppid)。如何将非压缩二进制文件中的符号指定给连接到运行进程的gdb?有两种主要方法 一种方法是在未压缩的可执行文件上启动gdb,然后附加: $ gdb unstripped (gdb) attach 12345 这条路很容易!但是,它有一个隐患,即您可能会意外地使剥离程序和非剥离程序不匹配,从而导致非常混乱的调试会话 另一种方法是在剥离时花时间将调试信息正确地拆分为单独的文件。有一些 使用

我有:

  • 正在运行的剥离二进制文件
  • gdb
  • 非压缩二进制

我可以连接到正在运行的剥离二进制(
gdp-ppid
)。如何将非压缩二进制文件中的符号指定给连接到运行进程的gdb?

有两种主要方法

一种方法是在未压缩的可执行文件上启动gdb,然后附加:

$ gdb unstripped
(gdb) attach 12345
这条路很容易!但是,它有一个隐患,即您可能会意外地使剥离程序和非剥离程序不匹配,从而导致非常混乱的调试会话

另一种方法是在剥离时花时间将调试信息正确地拆分为单独的文件。有一些

使用这种方法,请确保使用buildid特性。如果这样做正确,那么您可以简单地将gdb指向单独调试信息的存档,gdb将自动获取正确的信息


这种方法的主要优点是避免了debuginfo不匹配的可能性。FWIW这是发行版用来建立他们的debuginfo档案的东西。

尝试使用
符号文件
。不确定它是否能解决你的问题。但是这个命令将从文件中加载符号。太棒了!有效:——)