問題タブ [addr2line]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - gaddr2line 使用時の BFD 不明コマンド
gaddr2line
バックトレースシンボルのよりきれいなバージョンを印刷するために使用しようとしています。backtrace()
を使用しgaddr2line
て実行することにより、アドレスを取得してからアドレスを取得していますpopen
。Linux での使用は問題なく動作しますが、OS X でのaddr2line
使用時に何らかの理由で奇妙なエラーが発生します。Mac OS でこれを試すと、GDB に関するいくつかの投稿を見たので、homebrew でインストールしようとしましたが、うまくいきませんでした。助けて。gaddr2line
BFD: ... : unknown load command ...
これが私のコードです:
出力は次のとおりです。
java - Java コードでクラッシュ ポイントを取得する方法
私のアプリケーションにandroid-support-v4.jar
は/libsしかありません。他のライブラリは使用しません。
アプリケーションが SIGNAL 11 エラーでクラッシュします。android-ndk のaddr2lineユーティリティを使いたいです。このツールを使用して Java ファイルの関数と行番号を見つけることはできますか? どんな助けでもここでとても役に立ちます
私のアプリケーションはwriting
Bluetooth Socket であり、その合間に を閉じています がソケットの後に呼び出されるsocket
ため、エラーが発生しています しかし、クラッシュの正確な行または機能を見つけることができませんどこで間違っているかを確認するにはどうすればよいですかwrite()
close()
Logcat トレース:
ubuntu - Ubuntu でストリップされたバイナリで使用するシンボル ファイルを addr2line に提供するにはどうすればよいですか?
Ubuntu で C++ アプリケーションを実行しています。私がやりたいのは、アプリケーション バイナリからシンボルを取り除いてバイナリの一部にならないようにすることですが、addr2line ユーティリティを使用して、バイナリの一部であるシンボルの代わりにシンボル ファイルを参照してバックトレース情報を取得します。 . これは可能ですか?
これまでに得た最も近いものは、次を使用してシンボル ファイルを生成することです。
そして、そのファイルを addr2line ユーティリティで次のように使用してみました。
しかし、これは苦情をもたらします:
それで、私は試しました:
しかし、これは苦情をもたらします:
誰かが私を正しい方向に導くことができますか? 私は何を間違っていますか?
助けてくれてありがとう!
編集:
次のようなシンボル情報だけを含むファイルを作成していると思ったとき、今気づきました。
私は実際には、thesymbols.sym と呼ばれる削除されたバイナリを作成していました。
そうは言っても、私の最初の質問はまだ残っています。何か案は?
c++ - objdump を使用してソース コード内の特定の関数呼び出しを検出する
特定の関数が呼び出される場所を検出する方法が必要です。例えば:
ポイントは、定義や宣言ではなく、関数呼び出しだけが必要だということです。また、「単純な」C ライクな識別子だけでなく、クラス メソッド、名前空間で定義された関数などにも必要です。このプログラムは主に C++ で使用するためです。
私の試み
GTags - 識別子をかなりうまく検出しますが、関数呼び出しと定義などを区別する方法はありません.
CScope - C には適していますが、C++ では失敗することがあります
objdump
+addr2line
- 以下で詳しく説明します
私は今objdump
、addr2line
この方法で使用しようとしています:
出力は次のようになります。
次に、最初の列から番号を取得し、次のようなコードで物理的な場所を取得しようとします。
関数呼び出しが正しく検出される場合もあれば、まったく異なるものが検出される場合もあります (ある種の参照などだと思います)。
それで、私の質問は、どの調査結果が関数呼び出しであるかを検出することは可能ですか? 出力にあることがわかりcallq
ましたが、コード内の関数呼び出しだけであるかどうかは完全にはわかりません。
linux - addr2line はどのようにしてソース ファイルとコード行を見つけることができますか?
addr2line
アドレスをファイル名と行番号に変換します。私はまだデバッグの初心者で、addr2line についていくつか質問があります。
特定の .so (バイナリ) ファイルをデバッグしている場合、ツールがそのソース コード ファイルを見つける方法 (どこから入手できるか!)、ソースが存在しない場合はどうなりますか?
バイナリのアドレスとそのソースの行番号の関係はどのようなものなので、 addr2line はこの種のマッピングを行うことができますか?