次の問題があります: backtrace(3) 関数を使用して C でバックトレースを取得すると、関数の名前が返されたシンボルは、dwarf ライブラリと dladdr(3) で簡単に判別できます。
問題は、単純な関数ポインターがある場合 (たとえば&functionを渡すことによって)、dladdr + dwarf 関数が役に立たないことです。ポインターが backtrace(3) によって返されるものとは異なるようです (backtrace はこれらの関数ポインターをスタックから直接取得するため、おかしなことではありません)。
私の質問は、これらの名前も解決する方法があるかどうかです。また、2つのポインターの違いを正確に知りたいです。
ありがとう!
アップデート:
ポインター間の違いは非常に重要です:
バックトレースで得られるものは: 0x8048ca4
ダイレクト ポインター バージョン: 0x3ba838
2番目のものにはオフセットが必要なようです。