0
-finstrument-functions
gccのオプションで、gccの__LINE__
などの現在の関数の行番号を取得する方法はありますか。gccの-finstrument-functionsオプションによる行番号の印刷
-finstrument-functions
gccのオプションで、gccの__LINE__
などの現在の関数の行番号を取得する方法はありますか。gccの-finstrument-functionsオプションによる行番号の印刷
いいえ、前処理時には__LINE__
にしかアクセスできず、後で__cyg_profile
関数が挿入されます。あなたができることは、返信アドレス(__builtin_return_address
経由)を取得し、実行時にそれを象徴することです(例えば、addr2line
を呼び出して)。これはもちろん、呼び出し元のコードがdebuginfoでコンパイルされている場合にのみ有効です。
EDIT
としては__cyg_profile
がパラメータとして関数のアドレスを取得するよう__builtin_return_address
が必要とされていない、以下Tsyvarevによって指摘しました。
しかし、私は '__builtin_return_address(2)'をサポートしていないARMアーキテクチャです – arceus
しかし、なぜ '2'ですか?呼び出し元の戻りアドレスは '__builtin_return_address(1)'でなければなりません。 – yugr
プロファイル関数は 'this_fn'を最初のパラメータとして受け取ります。これは関数の開始アドレスです。したがって、 '__builtin_return_address'はまったく必要ありません。 – Tsyvarev