いくつかのデバッグ タスクを自動化しようとしています。場合によっては、$ra[これは MIPS マシンです] の値とスタックの一部を 16 進アドレスとして出力します。デバッグ中に、それらをペアaddr2lineに変換するために使用します。file:line
この手順を自動化したい。
問題は、 addr2line が__FILE__コンパイル時の値と同等のファイル名を返すことです。つまり、コンパイラに渡されるファイルの名前です。これは通常foo.c、時々src/foo.cです。私のプロジェクトには合計で数百のディレクトリがあるため、これだけではファイルを一意に識別できない場合があります ( 、 などがある場合があります1/foo.c) 2/foo.c。決定論的であったとしても、引数ごとに画面で検索を開始するのはかなり非効率的です [ハッシュ テーブルを作成して保存できると思いますが、これを単純な bash スクリプトとして保持したいと思います]。
GDB は適切なファイルを取得しているようです。デバッグ シンボルを含む実際のソース ファイルを見ると、ファイル名の直後に__FILE__[つまり、__FILE__issrc/foo.cであり、実際には にある場合、ファイルに表示されるフル パスがあるように見えることも/home/me/projects/something/comp1/src/foo.cわかり/home/me/projects/something/comp1ます。これをプログラムで取得するにはどうすればよいですか?
ありがとう。