明示的にアプリケーションをクラッシュするクリーンな方法?
-
26-09-2019 - |
質問
私のアプリケーションが持つカスタムクラッシュハンドリングビルトイン( 『デバッグWindowsアプリケーション』についてのジョン・ロビンズ優れた書籍を参照してください)。この機能をテストするために、私はいつもにDebugBreak(Windowsの機能を使用)、これは常に完全に働きました。しかし、Windows 7のために、この関数を呼び出すと、単に「ブレークポイントに到達した」と、私のクラッシュハンドラを呼び出すことなく、アプリケーションを停止すると言います。
私は常にクラッシュ機能をテストするために自分のアプリケーションにこのコードを置くことができます:
int *ptr = (int *)0xdeadbeef;
*ptr = 123456789;
あるいは有効なアドレスである0xdeadbeefが念のために、いくつかの例を追加します:
int *ptr = (int *)0xdeadbeef;
*ptr = 123456789;
ptr = (int *)0L;
*ptr = 123456789;
ptr = (int *)0xffffffff;
*ptr = 123456789;
しかし、私は思っていた:?Windowsで、アプリケーションをクラッシュさクリーナーの方法は、
がありません解決
ちょうどそれらの試みとコール1いくつかのメンバ関数を持つオブジェクトへのNULLポインタを作成しますか?あなたが知っているので、多分機能でそれをやってdaoes
void CrashApp()
{
MyObject * ptr = 0;
ptr->Function();
}
確かに最も簡単な方法と
に行くかなり明確いただきました!他のヒント
あなたは()の代わりにDebugBreakの __debugbreak()固有に使用することができます関数。これは、
EXCEPTION_BREAKPOINTを使って何とクラッシュを言っていません。RaiseException()には、さらに別のありますクラッシュへの道ます。
所属していません StackOverflow