linux - 如何使用 --add-gnu-debuglink 将 gdb 符号文件保存在挂载文件夹中

标签 linux debugging ubuntu gdb gdbserver

<分区>

这是 wrt Ubuntu 设置。

简而言之,如果我使用命令“objcopy --add-gnu-debuglink=/mntsymbols/binsymbol/prog.debug prog”它不起作用,并且在执行 gdb 时找不到符号. 仅当 prog.debug 与 prog 位于同一文件夹中时,gdb 才会获取符号。 在我执行 gdb> symbol-file/mntsymbols/binsymbol/prog.debug

后一切正常

/mntsymbols 是从远程机器挂载的文件夹。 prog 是剥离的二进制文件。 prog.debug 是使用“objcopy --only-keep-debug”创建的 prog 的调试符号文件。

我正在尝试为一个简单的测试程序设置一个 gdb 符号服务器。 sys1 是 gdb 符号服务器。将符号文件保留为 sys1:/root/symboldir/testp1symbols/prog.debug sys1:/root/symboldir/testp1symbols/shared1.so.debug

将在 sys2 上挂载 sys1:/root/symboldir/,我应该能够在 sys2 上使用 gdb 进行调试。如何使用 --add-gnu-debuglink 或任何其他方式实现此目的。

最佳答案

Documentation .

您应该使用 --add-gnu-debuglink=prog.debug 并将 GDB 中的 debug-file-directory 设置为 /mntsymbols/binsymbol.

按照您设置的方式,GDB 可能会在 /usr/lib/debug/mntsymbols/binsymbol 中查找 prog.debug。您可以通过在 strace -e open 下运行 GDB 本身来验证这一点。

关于linux - 如何使用 --add-gnu-debuglink 将 gdb 符号文件保存在挂载文件夹中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44028934/

相关文章:

java - 找出以编程方式抛出 NullPointerException 的变量

Delphi - 如何重新启用调试器异常通知?

在 Visual Studio Code 和 Delve 调试器中使用标签调试 Go

linux - 在 ubuntu docker 容器中运行 wine

linux - 在 linux 内核中,对 kfree 的调用会休眠吗?

linux - 确定用于构建 ATLAS 的独立 CPU(用关联 ID 指定)

c++ - 添加 include netfilter.h 时出现错误,字段 'in' ,'in6' 的类型不完整

c++ - 我们应该在子进程中使用退出还是返回

ruby-on-rails - 为什么我的部署用户不使用我的 ssh key ?

ubuntu - Apache 'You don' t 有权访问此服务器上的 xx'