我使用了几台freebsd机器,而且所有这些机器都是相同的版本,
10.3-RELEASE i386。并通过端口安装distcc每台机器,
的/ usr /端口/ devel的/ distcc的/.
我认为distcc版本是distcc-3.1,因为/ usr / ports / distfiles /中的distcc-3.1.tar.bz2文件。
任何编译都非常成功,即使是按照我预期的非常快的方式完成。
但是在我尝试在gdb中创建断点之后,它无法捕获项目的任何源文件。
这可能是临时文件的结果,例如' distccd_xxxxxx.ii' distcc / distccd在机器之间给予和接收。
我已经尝试了目录'在gdb中命令,这还不够,因为我的文件树太复杂了。
当我在没有distcc的情况下在本地编译它时,gdb就可以了。
有没有解决方案来打破我的情况?
答案 0 :(得分:0)
您是否在distcc常见问题中看到了该条目? https://github.com/marksatt/distcc/blob/master/doc/web/faq.html:
不幸的是,这是由gcc中的一个错误引起的,我希望这个错误 在将来的版本中修复。 gcc嵌入了目录所在的位置 编译器(cc1)运行时,它真的应该记录目录 来源来自。
您现在可以使用“directory”命令解决此问题 在gdb中告诉它在哪里找到源码,或者通过传递绝对值 编译时的文件名。
蒂姆·贾尼克(Tim Janik)有一个unofficial patch的distcc,可以解决这个问题,但我想我 不会合并它,因为最好在gcc中修复它。
这是Debian #148957。
gcc-patches邮件列表上有一个discussion about this bug 这可能会影响依赖于调试攻击的其他程序,例如 addr2line,它导致对象文件不存在 当它们包含源目录时,逐字节相同。该 同样的错误会影响ccache。
补丁似乎现在在这里:http://testbit.eu/~timj/patches/