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

0 投票する
1 に答える
1110 参照

c++ - SEH によるアクセス違反の処理

保護 PAGE_NOACCESS を持つ 2 つのページに囲まれたメモリを割り当てるメモリ マネージャーを作成しました。SEH ブロックでこのメモリを使用する関数を呼び出し、このブロックで発生する ACCESS_VIOLATION 例外 (存在する場合) をキャッチします。さて、私の例外ハンドラで、プログラムがアクセス権を持っていなかったアドレスを取得することは可能ですか? 障害のある命令へのポインターを取得できることは知っていますが、実際にアセンブリを解析する必要がありますか?

これは、保護されたメモリで違反が発生したか (そこから実行を続行できます。これは予期される動作である可能性があります)、またはおそらくプロセスを終了する必要がある別の (不明な) 場所で発生したかどうかを知るためです。代わりに PAGE_GUARD 保護を使用することを考えました。これは、アクセスされたメモリが保護されたメモリからのものである可能性があることを特定するのに役立ちますが、確実ではありません (つまり、スタックの後のメモリは PAGE_GUARD で保護されています)。

どんな助けでも感謝します:)

0 投票する
1 に答える
100 参照

winapi - ExceptionCode から説明を取得する

ExceptionRecord の ExceptionCode:s を、通常のエラーの FormatMessage のような読み取り可能なメッセージに変換するための API はありますか。

0 投票する
3 に答える
5283 参照

c++ - 使用されていない変数へのロードをコンパイラが最適化しないようにする方法

はじめに:古いコードをすばやくハックして修正し、__try MSVC 拡張機能を使用して、一部の ptr が正当なメモリを指しているかどうか、または *ptr がメモリ違反を引き起こすかどうかを確認しようとしています (そうであれば、この ptr の処理を​​中止します)。だから私は次のようなものを書きました:

メモリへのアクセスを強制する私の解決策は奇妙で醜いように見えますが、おまけとして、それが正しいかどうかはわかりません。また、プロジェクト全体で最適化を無効にすることはできないため、それはオプションではありません。また、MSDN のプラグマ オプティマイズに関するドキュメントはひどいものです。別名、"" が関数のすべての最適化を無効にするかどうかは明確ではありません。

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

c++ - EXCEPTION_RECORD から読み込みに失敗したファイル名を取得するには?

ベクトル例外ハンドラを登録しました。この記事を使用して、EXCEPTION_POINTERS構造からオブジェクトの名前を取得できましたpExceptionInfo:

取得したオブジェクトの名前は です.PAVEEFileLoadException@@。したがって、私が理解しているように、ある種のファイルのロードに失敗しました。EXCEPTION_RECORD またはその他の構造からファイルの名前を取得する方法はありますか?

0 投票する
1 に答える
215 参照

debugging - WP 8 アプリは、ネイティブ モードのデバッグ (リリース モード) では正常に動作しますが、デバッガーがないとクラッシュします。

問題のアプリは、ネイティブ コードとマネージド コードの両方を使用しています。マネージ コードは、操作の大部分を実行するネイティブ dll とリンクしている間、UI レイヤーのみを提供します。ネイティブ dll は、他のいくつかの静的 dll とリンクしています。問題は、アプリを実行すると非決定論的にクラッシュすることです。マネージ コードのデバッグでアプリをデバッグすると、ネイティブ コードの特定の関数が "SEH" 例外をスローしたことが示されます。スタック トレースは現在の関数を表示するだけです。SEH Exception で表示されるエラー コードは EFAIL です。ただし、アプリはネイティブ デバッガーで毎回正常に動作します。SEH 例外をスローする関数はシングル スレッドです。他のスレッドでアクセスできるリソースは使用しません。この動作の考えられる原因は何ですか? ネイティブ コードで例外の発生源を検出するにはどうすればよいですか。

Visual Studio 2012 を使用しています。

0 投票する
1 に答える
1226 参照

c++ - __try および __except がリリース ビルドで機能しない

私のプログラムでは、AccessViolation などのエラーをキャッチする SEH 例外ハンドラーを実際に使用する必要がありますが、ハンドラーはデバッグ ビルドでのみ機能します。

リリース ビルドで同じオプションを有効にしましたが、機能しません。

とにかくリリースモードでSEHを有効にする方法は?

ありがとうございました!

デバッグ ビルド モードでは機能しますが、リリース (クラッシュ) では機能しません。

0 投票する
1 に答える
329 参照

c - C で呼び出されない例外ハンドラ

C の構造化例外処理について読んでいます。期待どおりに動作しないサンプル コードを次に示します。

このコードは次の場所から取得されます。

http://msdn.microsoft.com/en-us/library/ha52ak6a.aspx

このコードは、無効なメモリ アドレスに書き込もうとして例外がトリガーされたときに、「Hello from my_handler」というメッセージを出力する必要があります。ただし、例外ハンドラはまったく呼び出されていないようです。

このコードをコンパイルし、Olly Debugger でデバッグしてみました。例外が発生すると、アプリケーションで定義された例外ハンドラーに例外を渡そうとしますが (Shift + F9 キーを押して)、呼び出されません。例外ハンドラ (最初の命令) にブレークポイントを設定しましたが、コードのそのセクションに到達しません。

この理由は何でしょうか?