実行時に例外を捕捉したスレッドのスタックトレースを出力できます。同じプロセス内で実行されている他のスレッドの痕跡も印刷する必要があります。私は例外が1つのスレッドで捕捉されるとすぐにすべてのスレッドをフリーズする良い方法を見つけることに興味があります。スレッドが例外を検出したときにすべてのスレッドをフリーズすることは可能ですか?
今のところ私ができるのは、アクティブなスレッドごとにクエリを実行してからSuspendThread()を実行することだけです。ただし、これにより、最初の例外がキャッチされた後に各スレッドが少し長く実行されます。すべてのスレッドを即座に中断させる方法はありますか?
ありがとうございました。
プロセスをクラッシュレポートで停止しますか?あなたが別のスレッドに送るシグナルのどんな種類にも時間がかかります。私は本当の疑問はあなたの目的に合っていると思っています。瞬間としての資格はありますが、そこではどのようにシグナルが得られますか? –
私は、たとえマルチコア/マルチプロセッサマシンなどであっても、一般的には「即時」とは考えられません。コア#1のスレッドがクラッシュした場合、コア#2はスレッドを停止することをどのように知っていますか?コア#1は、コア#2に「疑わしいスレッド」メッセージを送信する必要があります。この時点までに、コア#2のスレッドはすでにいくつかの命令を実行していました。 –
アプリケーションのアーキテクチャに応じて、スレッドの代わりにファイバーを使用することができます。 (もちろん、リリース版ではこれをしたくないかもしれませんが、デバッグには問題ありません) –