問題タブ [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.
android - Android で addr2line を使用する方法
マルチスレッドであり、エラー SIGSEGV でクラッシュするため、デバッグできず、アプリに行き詰まっています。LogCat から多くの情報を取得します。これにより、ネイティブ ライブラリのアドレスが得られます。これらのアドレスを自分のコードに変換できれば助かります。
android-ndk で提供されている addr2line の使い方を知っている人はいますか?
c - Linux で addr2line コマンドを使用するには?
Unix で addr2line コマンドを使用しようとしていますが、毎回 ??:0 と同じ出力が得られます。としてコマンドを与えていaddr2line -e a.out 0x4005BDC
ます。このa.out実行可能ファイルをvalgrind
ツールで実行してメモリリークを見つけたときに、このアドレスを取得しました。-g
ソースコードもオプションでコンパイルしました。
c - 現在の実行可能ファイル名を取得する glibc 関数?
現在の実行可能ファイルを取得する gcc/g++ から使用できる glibc 関数があるかどうか疑問に思っています。
これの目的は 、この回答addr2line
に示されているように-e 引数を提供することです
gdb - Code in Memory を解析する addr2line はありますか?
例外がスローされた後、スタックトレースを分析するために使用addr2line
しています (backtrace と backtrace_symbols を使用)。現在、ディスクから 120Mb のバイナリ (デバッグ ビルド) を分析するには、約 2 秒かかります。
メモリ内のコード セグメントを分析することによって同じ仕事をするライブラリ (LGPL) はありますか? もちろん、これは自分のアプリケーションのみを分析することを制限しますが、私のユースケースではこれで十分です。
android - Android で addr2line を使用するにはどうすればよいですか?
私のコード (Android の PhysicsBox2DExtension で AndEngine を使用するゲーム) がクラッシュし、addr2line を使用するように提案されましたが、その方法がまったくわかりません。おそらく、誰かが私に段階的な指示を与えることができますか?
Windows 7 と Eclipse Indigo を使用しています。Android NDK r8 をダウンロードし、C:\Program Files (x86)\Android NDK\android-ndk-r8 に保存しました。私のプロジェクトは C:\Users\Reese\workspace\TestGFX5 に保存されます。
スタックトレース:
それを超えて、私は迷っています。助けてください?
c++ - addr2line へのライブラリ呼び出しはありますか?
C++ プログラム内から addr2line (関数呼び出しのバックトレースからのファイルと行) によって提供される情報を取得する必要があります。addr2line に似たライブラリ呼び出しはありますか?
編集: Linux 環境で作業しています。
addr2line を直接呼び出すことができることと、自分のプログラムで addr2line のソース コードを使用できることを知っています(これも GPL ライセンスです)。しかし、ライブラリ関数が存在する場合は、それを呼び出す方がクリーンだと思います。
編集: addr2line と同じように、binutils の bfd を使用します。とにかくbfdとはどういう意味ですか?
c++ - addr2lineの「ディスクリミネーター」とは何ですか?
一部のプログラムでaddr2lineを実行すると、行の最後に「discriminatorN」コメントが表示されます。
main at /tmp/nsievebits.c:56 (discriminator 3)
マニュアルページにはそれが記載されておらず、グーグルですばやく検索すると、明確な説明がなく、ほとんどがソースコードファイルであることが示されているようです。意図的に文書化されていない機能ですか?さらに重要なことに、私はそれについてまったく心配する必要がありますか?
linux - addr2line が「疑問符」行を出力することを回避する方法はありますか
addr2line
プログラムを呼び出すと、次の形式の出力が得られます。
よりクリーンな出力を取得する可能性はありますか (疑問符とゼロ行なし??
) ??:0
。アドレスを解決でき、もう少し構成可能な別のツールはありますか?
ありがとう
c++ - 欠陥のあるライブラリが原因で発生したクラッシュのバックトレースを分析する
私のアプリケーションでは、セグメンテーション違反をキャッチし、bactrace を出力するようにシグナル ハンドラーをセットアップしました。私のアプリケーションは、プロセスの開始時にいくつかのプラグイン ライブラリを読み込みます。
メインの実行可能バイナリのエラーが原因で、アプリケーションがセグメンテーション違反でクラッシュした場合、次の方法でバックトレースを分析できます。
関数と source_file:line_no を正確に表示します
しかし、以下のバックトレースのように、プラグインのエラーが原因でクラッシュが発生したかどうかを分析するにはどうすればよいでしょうか?
私のアプリケーション ライブラリとプラグイン ライブラリは両方とも gcc でコンパイルされており、ストリップされていません。アプリケーションを実行すると、dlopen で plugin.so がロードされます 残念ながら、gdb でアプリケーションを実行できないサイトでクラッシュが発生しています。
必死に答えを探し回っていますが、backtrace と addr2line について議論しているすべてのサイトは、障害のあるプラグインの分析が必要になるシナリオを除外しています。心優しいハックがこのジレンマの解決策を知っており、いくつかの洞察を共有できることを願っています. 仲間のプログラマーにとっては非常に貴重です。
事前にたくさんの感謝を。
android - addr2line が特定のアドレスを関数名に解決できないのはなぜですか?
コマンドの実行から取得したバックトレースがありdumpheap -n <PID> <file>
ます。これらのバックトレースを意味のあるものにするために、これらのアドレスを関数名と行番号に変換する必要があります。addr2line を使用して、これらのアドレスを関数名に変換しました。これは私が使用したコマンドaddr2line -C -f -e <libname>.so <address>
です。addr2line が関数名の代わりに $t を与える特定の場所がありますが、ファイル名:行番号は正しく与えます。この「$t」を関数名に解決するにはどうすればよいですか。