問題タブ [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.
exception - SEHを無視してWine経由でコアダンプを強制する
プログラムから強制的にコアダンプを取得したい (または他の方法で特定の時間にそのメモリを確認したい)。ただし、いくつかの問題があります。
- wine で実行しています (アプリケーションが検出するため、winedbg 経由では実行できません)
- アプリケーションは、非標準イベントをキャプチャする例外/SEH/その他のハンドラーを使用します
- strace をアタッチしても、プログラムが動作しなくなります
- ぶらぶらしたいので、印刷できる特定の領域はありません
- うーん...ソースがありません
コードを両方に変更してみました:
そして、実際の命令ではないいくつかのランダムなもの-SEHが起動してアプリケーションを救出したときの両方。
どうすれば情報を入手できますか? 特定の時間のメモリ イメージが必要で、それが発生した正確な場所にパッチを適用できます。
winapi - UnhandledExceptionFilterの「アプリケーション定義」とは正確には何ですか?
MSDNはUnhandledExceptionFilter
、次のように説明しています。「プロセスがデバッグされている場合に、未処理の例外をデバッガーに渡すアプリケーション定義関数。」
しかし、この関数は、同じページによると、kernel32.dllのOSによって明確に提供されています。
では、なぜ彼らはそれをアプリケーション定義関数と呼ぶのでしょうか?
c++ - ハードウェア例外の模倣
EXCEPTION_FLT_STACK_CHECKまたはEXCEPTION_BREAKPOINTを発生させる次の関数のコードを誰か教えてもらえますか?メイン関数でそれらをキャッチできるからです:
RaiseException関数を提案しないでください。ソフトウェアで発生した例外ではなく、障害コードの例が必要です
UPD: 次の例外 EXCEPTION_INT_OVERFLOW 用にもう 1 つのコード スニペットが必要です
c++ - EXCEPTION_FLT_UNDERFLOW をスローするには?
EXCEPTION_FLT_UNDERFLOW をスローするサンプル コードが必要です。その例外を処理するコードが既にあります。今、私はそれをスローするサンプルが必要です。何かアドバイスはありますか?
c++ - Win32メッセージディスパッチャによってキャッチされる例外の問題
これはちょっと低レベルのタイプの質問ですが、おそらくここの誰かがいくつかの洞察を持っています...
未処理のSEH例外(アクセス違反など)が、プログラムを終了するのではなく、Win32メッセージディスパッチレベルでキャッチされているように見えるという問題があります。問題を説明している次のリファレンスブログを見つけましたが、WM_TIMERメッセージのコンテキストでのみ: http: //bugswar.blogspot.com/2010/07/why-its-not-crashing.html
Win 2008R2と「通常の」メッセージ(例:WM_COMMANDなど)で問題が発生しています。Windowsが例外をマスクして「助け」ようとしているのではないかと思いますが、エラーを出してほしいと思います。「続行して無視する」動作は、一般的にアプリケーションに問題を引き起こしています。すべての関数をtry/catchでラップし、コンパイラオプション/EHaを使用してSEH例外をC++例外に変換できることを理解しています(これ自体は非常に推奨されておらず危険です)が、これは明らかに最適ではありません。
参照されているブログによると、TIB構造(http://en.wikipedia.org/wiki/Win32_Thread_Information_Block)のAppCompatFlags2にフラグがあり、Win32ハンドラーがSEH例外をキャッチ/破棄しない原因となる可能性がありますが、私にはありませんそれを設定/有効化する方法を考えてください。誰かがこれについて何か洞察を持っていますか?Windowsが例外をキャッチして無視しないように有効にできるAppCompat設定はありますか?
windows - Windows で子プロセスの例外をキャッチする
マルチプラットフォームの C++ ファジング アプリケーションを開発しています。アプリは子プロセスを生成し、予期せず停止したかどうかを確認します。私はすでにLinuxでこれを行うことができましたが、Windowsの例外処理メカニズムが私にとって困難です。
私のコードは現在、次のことを行っています。 - CreateProcess を呼び出して、プロセスを生成します。- 終了するまで待機する WaitForSingleObject。- 次に、GetExitCodeProcess を呼び出して、終了コードが例外に対応するかどうかを確認します。
すべてが正常に機能し、null デリファレンス テスト アプリケーションでテストしたところ、例外を適切にキャッチできました。ただし、これをテストするたびに、エラー レポートを送信するか送信しないかを示す Windows エラー メッセージ ボックスが表示されます。ファザーは自動テスト アプリケーションであると想定されているため、何らかの方法でこの通知を無効にして、例外がキャッチされた場合でもファザーがテストを続行できるようにする必要があります。
すでに SEH ハンドラーをインストールしようとしましたが、運がありませんでした (明らかに、これらのハンドラーは子プロセスに継承されません)。ベクトル化された例外処理の使用について何か読んだことがありますが、同じであると仮定すると、ベクトルハンドラーは継承されないと思います。
誰でもこの問題を解決できますか? 何を検索すればよいかわかりません。すでにたくさんグーグル検索しましたが、何も見つかりませんでした。
ありがとう!
c++ - Visual C++ アンマネージ コード: C++ 例外に /EHa または /EHsc を使用しますか?
アンマネージ C++、Visual Studio 2008 以降で新しいプロジェクトを作成する場合、どの例外処理モデルを使用しますか?
/EHa オプションを使用するとコードの効率が低下し、SEH 例外もキャッチされることは理解していますよね?
そのため、私はそのオプションを避け、通常は /EHsc を使用して、catch(...) ハンドラーで実際にスローされた C++ 例外のみをキャッチし、アクセス違反やその他の構造化された例外をキャッチしていません。コードにアクセス違反がある場合、catch(...) {} でマスクされたくありません。
私は、catch(...) {} が何もしないことを望んでいて、アクセス違反があった場合にそれを実行することさえ望んでいる他の人とコーディングしています。これは、私には本当に悪い考えのように思えます。悪いコーディングによるバグがある場合、耳に指を突っ込んで「ラララララ!」と大声で言いたくないでしょう。プログラムがクラッシュする必要がないようにするには?実際、コーディング エラーが原因でコードが悪い状態になっている場合、本当にコードを続行しますか?
したがって、私の一般的な考えは、/EHa はより大きな/より遅いコードを作成し、致命的なバグが存在する場合に未定義の状態で実行し続けるコードをプログラマが書くことを回避できるようにするというものです。
ところで、私が話しているのはアプリケーションとサービス コードであり、その大部分は私たちが書いているものです。低レベルのデバイスドライバーなどではありません。
あなたの考えを考慮してください。
windows - SEH例外コードのビット31と30の意味は何ですか?
SEH例外コードのビットの意味を調べようとしています。RaiseExceptionに関するMSDNの記事から、ビット28がシステム定義の例外用にシステムによって予約されていることがわかりました。ただし、例外コードを考えると、0xC0000005
なぜそうではないのかわかりません0x00000005
。ビットパターンは0xC0000000
、時間の霧に負けていない何かを示していますか?もしそうなら、それは何ですか?
winapi - Win32 の FS レジスタ
Win32 で SEH がどのように実装されているかを読んでいて、FS registerと呼ばれるものに出会いました。Google で良いものを見つけることができませんでした (ほとんどの場合、間違ったものを検索している可能性があります)。それで、誰がそれが何であるかを説明できますか?
c++ - 標準ライブラリ呼び出しからの構造化例外 (SE)
::fgetpos を呼び出すコードがあり、キャッチできないカーネル例外が発生します (私の VS 2008 プロジェクトにはオプション /ehs があります)。しかし、標準ライブラリ ルーチンがこの種の例外をスローする べきではないと思わずにはいられません。
update : ::fgetpos(0, &foo) を呼び出してみましたが、これは明らかに間違っていて、実際にカーネル レベルの例外を受け取りました。私は困惑しています。C++ 標準ライブラリが最も基本的な引数チェック (null ポインターのチェック) を実行せず、std::invalid_argument を発生させないのはなぜですか?
そのような基本的なチェックを実行する標準ライブラリルーチンはありますか?それとも、それらはすべて喜んでプログラムを終了させますか?