問題タブ [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.

0 投票する
0 に答える
127 参照

android - minidump-2-core のコアを使用した gdb の場合、バックトレースが正しくない

Android アプリからクラッシュをデバッグしようとしています。このクラッシュは NDK armv7a so ライブラリで発生し、Google ブレークパッドはミニダンプを報告します。

qemu-system-arm でブレークパッドをビルドすると、minidump_stackwalk がうまく機能します。

しかし、minidump-2-core と gdb を試すと、バックトレースにフレームが 1 つしかありません。

gdb は 1 フレームしか取得していないようですが、どのステップが間違っていますか?

0 投票する
2 に答える
503 参照

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のような他のツールで:

アイデアやヒントはありますか?