2017-01-30 12 views

答えて

1

いいえ、前処理時には__LINE__にしかアクセスできず、後で__cyg_profile関数が挿入されます。あなたができることは、返信アドレス(__builtin_return_address経由)を取得し、実行時にそれを象徴することです(例えば、addr2lineを呼び出して)。これはもちろん、呼び出し元のコードがdebuginfoでコンパイルされている場合にのみ有効です。

EDIT

としては__cyg_profileがパラメータとして関数のアドレスを取得するよう__builtin_return_addressが必要とされていない、以下Tsyvarevによって指摘しました。

+0

しかし、私は '__builtin_return_address(2)'をサポートしていないARMアーキテクチャです – arceus

+0

しかし、なぜ '2'ですか?呼び出し元の戻りアドレスは '__builtin_return_address(1)'でなければなりません。 – yugr

+1

プロファイル関数は 'this_fn'を最初のパラメータとして受け取ります。これは関数の開始アドレスです。したがって、 '__builtin_return_address'はまったく必要ありません。 – Tsyvarev

関連する問題