関数のアドレスを取得していますが、これらのアドレスをシンボルに変換する方法がわかりません。 (関数名)。助けてくださいlinuxのリンクレジスタ(backtrace_symbolなど)を使用して関数アドレスから関数名を取得する方法
答えて
最初の答えは、シンボル処理が隠された内部のABIだということです。いくつかのOSはカーネル空間でもこの魔法を実行します。しかし、明らかにARM + Linuxが必要です。
最初に必要な情報は、アドレスを元に戻すことです。このマッピングはここから取得できます:/ proc/self/stat
次の部分は、それらのファイルからそれらのオフセットをシンボルに逆順にするのが難しいです。そのためには、ELFファイルを解析する必要があります。あなたがバイナリデータを解析したくない場合は、代わりに
http://man7.org/linux/man-pages/man5/elf.5.html
objdumpの-t -T -r -R/libに/ x86_64の-linuxの-GNU/libnss_filesをカンニングしてobjdumpを使用し、ASCII形式のデータを解析することができます-2.19.so
これ以上の詳細情報が必要な場合は、デバッグ情報が含まれているセクションを解析する必要があります。また、別のファイルに移動して、 dbgパッケージを使用することができますが、これはおそらく多くの作業に役立ち、gdbをハックするかvalgrindのようなプロジェクトからコードを抽出する方が簡単です。
PS:物事がうまくいかないとき、あなたのユースケースは、デバッグ/診断を実行する場合、私は実行可能ファイルのデバッグバージョンは、その中にシンボル名を持つvalgrindの
あなたが運が良ければ、あなたのlibcにbacktraceとbacktrace_symbolsの呼び出しがあります。あなたのマンページを確認する –
- 1. ARM7lのスタックフレームに関数名が格納されている場所(リンクレジスタ "lr"の関数アドレスではない)
- 2. プロファイルアドレスから関数名を取得する方法は?
- 3. GetFunctionInfoを使用してFunctionIDから関数の名前を取得する
- 4. LLVM-関数の実名/元の名前で関数を取得する方法
- 5. 配列を使用してPHP関数から値を取得する方法
- 6. 関数を使用して列名を取得するSqlite3
- 7. C関数を取得するアドレス
- 8. 関数名の取得方法
- 9. COM DLLの序数から関数名を取得する方法
- 10. 匿名関数でbind関数を使用する方法
- 11. 関数から別の関数への値の取得方法
- 12. flexで、関数オブジェクトから関数名を取得
- 13. 関数名から組み込み関数を取得
- 14. 他の関数名から新しい関数名を生成する方法
- 15. 関数から変数を取得する方法(){$ .get()return variable; } 関数 ? jqueryで?
- 16. Windbgを使用してスタックからMono関数の名前を取得する方法
- 17. lapplyを使用して関数に渡されたリストからdata.frameの名前を取得する方法
- 18. 集約関数と集計関数を使用してデータフレーム内のユニークな列を取得する方法は?
- 19. $ .getJson関数から変数を取り出して使用する方法
- 20. R関数で変数名を取得する方法
- 21. 外部関数から変数を取得する方法
- 22. 関数から変数へデータを取得する方法
- 23. $ .getjson .done関数から変数を取得する方法は?
- 24. JS関数から動的な値を取得する方法
- 25. ループ関数を使用して簡潔なコードを取得する方法
- 26. SWTブラウザを使用してajaxリクエストからデータを取得するJavaスクリプト関数からEclipse関数に戻り値を取得する方法は?
- 27. react.jsを使用してAPI関数からjsonデータを取得
- 28. JavaScriptを使用してサーバ側から関数を取得
- 29. PHP関数を使用してXMLからデータを取得
- 30. iPhone iOS CoreDataから関数を使用してNSMutableArrayを取得
を使用することをお勧めします。したがって、実行可能ファイルの形式を説明するドキュメントを入手する必要があります。 – user3386109
私はこれを一度試しました。私はスタック上のアドレスをロギングし、手動でアセンブラ出力で検索しました。非常に遅い手順。私はバグを見つけました。 – Andreas
addr2lineをチェックアウトすると、それはあなたが望むのと同様のことをします。 – fluter