0

私はいくつかの freebsd マシンを使用していますが、それらはすべて同じバージョンです。

10.3-RELEASE i386。そして、ポートを介してすべてのマシンにdistccをインストールし、

/usr/ports/devel/distcc/.

/usr/ports/distfiles/ にある distcc-3.1.tar.bz2 ファイルから、distcc のバージョンは distcc-3.1 だと思います。

私が期待したように、非常に高速な方法でさえ、コンパイルは非常に成功しました。

しかし、gdb でブレーク ポイントを作成しようとすると、プロジェクトのソース ファイルをキャッチできません。

distcc/distccdがマシン間で授受する「distccd_xxxxxx.ii」などの一時ファイルの結果かもしれません。

gdb で「ディレクトリ」コマンドを試しましたが、ファイル ツリーが非常に複雑で大きすぎるため、十分ではありません。

gdb は、distcc を使用せずにローカルでコンパイルした場合に問題ありません。

私の状況を打破する解決策はありますか?

4

1 に答える 1

0

distcc FAQ のエントリを見ましたか? https://github.com/marksatt/distcc/blob/master/doc/web/faq.html :

残念ながら、これは gcc のバグが原因であり、将来のリリースで修正されることを願っています。gcc は、コンパイラ (cc1) が実行されたディレクトリを埋め込みます。これは、ソースの元のディレクトリを実際に記録する必要がある場合です。

gdb で「ディレクトリ」コマンドを使用してソースの場所を指定するか、コンパイル時に絶対ファイル名を渡すことで、今のところ回避できます。

Tim Janik は、これを回避する distcc の非公式パッチを持っていますが、gcc で修正する方が良いので、マージしないと思います。

これは Debian #148957です。

このバグについては、gcc-patches メーリング リストで議論 がありました。
これは、addr2line などのデバッグ スタブに依存する他のプログラムに影響を与える可能性があり、ソース ディレクトリが含まれている場合、オブジェクト ファイルがバイトごとに同一でなくなる可能性があります。同じバグがccacheに影響します。

パッチは現在ここにあるようです: http://testbit.eu/~timj/patches/

于 2016-05-27T13:43:42.090 に答える