-1

デバッグ情報内の相対パスがコンパイラまたはメイクファイルに依存することを知っている人はいますか?

プロジェクトをどこにでも配置できるので、相対情報が好きです。

ただし、パスが一致しないために、デバッガーがソースコードを見つけられない場合があります。

誰がデバッグ情報で相対パスまたは絶対パスを使用して制御しているのかわかりません。おそらくコンパイラ、メイクファイル、そしておそらくその両方です。

誰かが正確に知っていますか?

4

2 に答える 2

0

あなたの質問は端が少し曖昧ですが...

私が使用するコンパイラーとデバッガーでは、相対または絶対の選択は、コンパイラーに渡されるパスによって決定されます。したがって、動作を変更する場合は、コンパイラを呼び出すコマンドを変更する必要があります。つまり、makefile内のコマンドを変更する必要があります。

于 2012-12-22T14:30:29.617 に答える
0

誰かが正確に知っていますか?

質問に正確に答えるのに十分な詳細を提供していません。

Makefile、make が実行するコマンドを定義します。

  • を実行する$(CC) -g -c foo.c -o foo.oと、ほとんどのコンパイラは相対パスfoo.cをオブジェクト ファイルにエンコードします。foo.c一部のコンパイラは現在のコンパイル ディレクトリもエンコードするため、バイナリを別の場所にコピーした後でも、デバッガはオリジナルを見つけることができます( gccLinux では、DWARFデバッグ情報を使用する他のほとんどのコンパイラと同様に、これが行われます)。

  • 一方、 をMakefile実行する$(CC) -g -c /path/to/src-directory/foo.c -o /path/to/obj-dir/foo.oと、ほとんどのコンパイラはフル パスをオブジェクト ファイルにエンコードします。

于 2012-12-23T00:26:52.040 に答える