我正在使用几台freebsd机器,它们都是相同的版本,
10.3-发布i386。并通过端口在每台机器上安装distcc,
/usr/ports/devel/distcc/。
我认为distcc版本是distcc-3.1,因为/usr/ports/distfiles/中有distcc-3.1.tar.bz2文件。
任何编译都是非常成功的,甚至以我所期望的非常快的方式完成。
但是,当我尝试在gdb中创建断点后,它无法捕获项目的任何源文件。
这可能是distcc / distccd在机器之间发送和接收的临时文件(如'distccd_xxxxxx.ii‘)的结果。
我在gdb中尝试过'directory‘命令,但这还不够,因为我的文件树太复杂太大了。
当我在本地编译gdb而不使用distcc时,它是很好的。
有什么解决方案可以打破我的处境吗?
发布于 2016-05-27 21:43:42
你有没有看过distcc中的条目?https://github.com/marksatt/distcc/blob/master/doc/web/faq.html:
不幸的是,这是由gcc中的一个错误引起的,我希望这个错误会在未来的版本中得到修复。gcc嵌入了运行编译器(cc1)的目录,而实际上它应该记录源代码所在的目录。您现在可以通过在gdb中使用"directory“命令告诉它在哪里可以找到源代码,或者在编译时传递一个绝对文件名来解决这个问题。Tim Janik有一个用于distcc的unofficial patch,它可以解决这个问题,但我认为我不会合并它,因为在gcc中修复它会更好。这是Debian #148957。在gcc的补丁邮件列表上有一个discussion about this bug。
这可能会影响依赖于调试stabs的其他程序,例如addr2line,并且当目标文件包含源目录时,它会导致目标文件不完全相同。同样的错误也会影响ccache。
补丁现在似乎就在这里:http://testbit.eu/~timj/patches/
https://stackoverflow.com/questions/37427227
复制相似问题