問題タブ [seh]
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.
winapi - RtlAddFunctionTable を使用する SEH ハンドラー
を呼び出して、gcc を使用して x64 Windows で SEH をセットアップしようとしていますRtlAddFunctionTable
。残念ながら、API 呼び出しは成功を返しますが、私のハンドラーは呼び出されないようです。そして、何が悪いのかわかりません。私の小さな例は次のとおりです。
ただし、呼び出されたときに得られる出力は次のとおりです。
私のハンドラーのメッセージは決して出力されません。
ヘルプ/ポインタは大歓迎です。
winapi - AddVectoredExceptionHandler は SetUnhandledExceptionFilter の代わりになりますか?
一部のリソースSetUnhandledExceptionFilter
では、 を使用して未処理の例外をキャッチする代わりにAddVectoredExceptionHandler
、すべての例外の通知を受け取ることができると示唆しているようです。
ただし、私が理解できる限り、ベクトル化されたハンドラーは、例外が処理されるかどうか、またはどこで処理されるかを決定する前に、プログラムで発生したすべての(SEH) 例外に対して「ちょうど」呼び出されます。
何か不足していますか?
windows - Windowsで「非同期」シグナルと見なされるものは何ですか?
ピンツール メーリング リストの質問への回答を読んでいました。非同期シグナルの配信は、ピンツールでの分析ルーチンの終了まで遅延されることが言及されています。Windows のどの例外が非同期シグナルとして認められるかについて興味があります。
c++ - DLL でプロセスを強制終了する例外を停止するにはどうすればよいですか?
私の C++ アプリケーションは、一部の外部ソフトウェアに API を提供するサードパーティの DLL を使用しています。ここには他のオプションはありません。これは、私が使用しなければならないソフトウェア、API、および DLL です。
私は自分のインターフェースを防爆しようとしています。API 呼び出しが失敗すると、DLL はプロセス全体を即座に強制終了する処理を実行します。呼び出しを try/catch でラップし、他のプロジェクトで正常に使用された SEH 変換クラスを使用し (および /EHa が選択されています)、さらに std::unexpected を処理しています。そのどれもトリガーされません。DLL 関数を呼び出すとすぐに、プロセスは終了します。
プロセスを保護するために、他にどのような手段を検討する必要がありますか? この API のためだけに子プロセスをスピンオフしたくありません。
windows - C++ の try-catch ブロックがハードウェア例外をキャッチしない
Visual Studio 2013 でハードウェアとソフトウェアの例外を調べています。「C++ 例外を有効にする」オプションを /EHa (SEH 例外ではい) に設定することで、ハードウェア例外をキャッチできることがわかっています。次の例外をキャッチしようとしています。
EXCEPTION_ARRAY_BOUNDS_EXCEEDED - キャッチできませんでした
EXCEPTION_ACCESS_VIOLATION - キャッチ
EXCEPTION_INT_OVERFLOW - キャッチしませんでした
EXCEPTION_INT_DIVIDE_BY_ZERO - キャッチ
これはコードの例です。
ゼロ除算の例外のみをキャッチします。これはプロセッサに依存していますか、それとも他に何かありますか? もう 1 つ質問があります。デバッグ ビルドとリリース ビルドに違いはありますか?
c++-cli - メッセージ付きで SEH 例外をスローする
C++/CLI ラッパー ライブラリを使用して C# アプリから呼び出される C++ ライブラリがあります。C++ コードでは、何か問題が発生したときに例外をスローしたいと考えています。管理された世界では SEHException に変換されます。ただし、元の例外に当然含まれていたメッセージはなくなりました。
このメッセージを C# に伝達するにはどうすればよいですか?
- たとえば、メッセージのマーシャリング
MyCppException
に翻訳されるように、何らかの方法で翻訳を設定できますか?MyManagedException
- SEHException にメッセージが含まれるような方法で例外をスローすることはできますか?
すべての C++/CLI ラッパー関数で例外をキャッチし、可能であれば再スローする必要は避けたいと考えています。