gdb在通过distcc编译后无法找到任何源代码

时间:2016-05-25 03:21:34

标签: gdb freebsd distcc

我使用了几台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就可以了。

有没有解决方案来打破我的情况?

1 个答案:

答案 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/