問題タブ [google-breakpad]
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 - minidump-2-core のコアを使用した gdb の場合、バックトレースが正しくない
Android アプリからクラッシュをデバッグしようとしています。このクラッシュは NDK armv7a so ライブラリで発生し、Google ブレークパッドはミニダンプを報告します。
qemu-system-arm でブレークパッドをビルドすると、minidump_stackwalk がうまく機能します。
しかし、minidump-2-core と gdb を試すと、バックトレースにフレームが 1 つしかありません。
gdb は 1 フレームしか取得していないようですが、どのステップが間違っていますか?
c++ - コンパイラの最適化を適用すると、Google ブレークパッド スタック トレースにシンボルが表示されない
Google ブレークパッドのようなクラッシュ レポーター ツールの要点は、ストリップされたバイナリからコア ダンプまたはミニダンプ ファイルを生成し、後でデバッグ シンボルを使用して処理することです。通常、これらのバイナリは、コンパイラの最適化が適用され、削除されたリリース ビルドです。
Linux で問題を再現するには:
1.ビルド + Google ブレークパッドのインストール:
2.コード:
CMakeLists.txt
:
main.cc
:
dump.sh
:
3. 通常Debug
バージョンを実行します。
4. ステージ 3 で生成されたミニダンプを処理します。
stackwalk
:
5. ステージ 3 を次のように実行し-O1
ます。
6. ステージ 4 のようにミニダンプを処理します。
stackwalk
:
ご覧のとおり、ステージ 6 のスタック ウォークから正しいシンボルが消えました。
他のツールでGDB
は、ステージ 5 のように -O1 を使用しても正しい場所を指す正しいトレースがあります。
またはbackward-cppのような他のツールで:
アイデアやヒントはありますか?