GDB 通过 distcc 编译后找不到任何源代码



我正在使用几台freebsd机器,它们都是同一个版本,

10.3 版 i386。并通过端口安装每台机器,

/usr/ports/devel/distcc/.

我认为distcc版本是distcc-3.1,因为/usr/ports/distfiles/中的distcc-3.1.tar.bz2文件。

任何编译都非常成功,甚至像我预期的那样以非常快的方式完成。

但是在我尝试在gdb中建立断点后,它无法捕获项目的任何源文件。

这可能是 distcc/distccd 在机器之间提供和接收的临时文件(例如"distccd_xxxxxx.ii")的结果。

我已经在gdb中尝试了"目录"命令,但这还不够,因为我的文件树太复杂了,太大了。

当我在没有distcc的情况下在本地编译它时,gdb 很好。

有什么解决方案可以打破我的情况吗?

您是否看到distcc常见问题解答中的条目? https://github.com/marksatt/distcc/blob/master/doc/web/faq.html :

不幸的是,这是由 gcc 中的错误引起的,我希望这将是 在将来的版本中修复。 gcc 嵌入了目录,其中 编译器(CC1)运行,当它确实应该记录目录时 来源来自。

您现在可以使用"目录"命令来解决它 在 gdb 中告诉它在哪里可以找到源,或者通过传递绝对值 编译时的文件名。

Tim Janik 有一个针对 distcc 的非官方补丁,可以解决这个问题,但我认为我 不会合并它,因为最好在 GCC 中修复它。

这是 Debian #148957。

在gcc补丁邮件列表中有一个关于这个错误的讨论。
这可能会影响依赖于调试刺的其他程序,例如 addr2line,它导致对象文件不是 当它们包含源目录时,逐字节相同。 这 同样的错误也会影响 ccache。

补丁现在似乎在这里:http://testbit.eu/~timj/patches/

相关内容

  • 没有找到相关文章

最新更新