問題タブ [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.
c++ - MinGW-w64 アプリケーションに Google ブレークパッドを使用する
Google Breakpad を Windows Qt プロジェクトに統合しようとしています。
MinGW(w64 ではない)でコンパイルすると、Breakpad は期待どおりに動作し、アプリがクラッシュすると Minidump ファイルが生成されます。
ただし、MinGW-w64 で同じコードをコンパイルすると、アプリは Minidump ファイルなしで科学的にクラッシュします。
この問題は、簡単なテスト プログラムで再現できます。
コードは、Breakpad ソース ツリーと共にコンパイルされます (バイナリ ライブラリとしてではありません)。
例外ハンドラが呼び出されていないようです。の ctor に登録すると、コールバック関数が呼び出されませんgoogle_breakpad::ExceptionHandler
。
では、なぜそれが起こるのですか?Breakpad を MinGW-w64 でコンパイルされたプロジェクトに統合することは可能ですか?
c++14 - PTRACE_ATTACH 後の無限待機状態の waitpid
C++ アプリケーションにGoogle-Breakpadを統合しました。現在、意図的にアプリケーションをクラッシュさせていますが、Ubuntu i686 システムでハングアップします。printf
どこにぶら下がっているかを正確に確認するには、Breakpad のどこにでも配置する必要があります。そのため、ブレークパッドでは、クローンの子プロセスが作成され、そのプロセスでは、syscall にptrace(PTRACE_ATTACH, pid, NULL, NULL)
続いてwaitpid(pid, NULL, __WALL)
、すべてのスレッドで呼び出されます。ある特定のスレッドで、waitpid が無限待機状態になり、故意にアプリケーションを強制終了する必要があります。
なぜこれが正確に起こっているのか誰にも分かりますか?この特定のスレッドwaitpid()
が無限待機状態になるのはなぜですか? 同じ解決策はありますか?
ありがとう。
c++ - Qt アプリケーションと Google ブレークパッド
現在、BreakPad を Qt アプリケーションに統合しようとしているアプリケーションを使用しています。初期設定と癖について、私を助けてくれるページを見つけました。
https://github.com/JPNaude/dev_notes/wiki/Using-Google-Breakpad-with-Qt
私はまだ実際の例外に対してそれを機能させることができません。デモ アプリケーションを作成しましたが、同じ問題が発生しています。これが私がテストするための手順です。現在、デバッグでテストしています。
- アプリケーションをビルドする dump_syms.exe BreakpadTest.pdb > BreakpadTest.sym を実行します
- アプリケーションを実行してダンプ ファイルを生成する
- minidump_stackwalk dumpfile.dmp シンボルを実行 > out.txt 2>&1
- BreakpadTest.sym を配置するファイル パスについては、out.txt を確認してください。
- BreakpadTest.sym ファイルを適切な場所に移動します。
- minidump_stackwalk dumpfile.dmp symbols > out.txt 2>&1 を再度実行します
これにより、out.txt ファイルが残ります。
このコードを実行するデモ アプリケーションで dumpFunc を呼び出すと、
次の出力が得られます
これは良いことであり、私が望むものです。しかし、実際に badFunc() で例外を発生させると、
次の出力が得られます
これは、例外が発生した実際のスタック トレースではありません。何がうまくいかないのか、または実際のスタックを取得するために変更する方法についてのアイデアはありますか?
デモ アプリケーション http://s000.tinyupload.com/?file_id=26352983283926785193