2010-09-02 71 views
1

我的應用程序具有自定義的內置碰撞處理功能(請參閱John Robbins關於「調試Windows應用程序」的優秀書籍)。爲了測試這個功能,我總是使用Windows函數DebugBreak(),而且這個功能一直很好。但是從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下崩潰你的應用程序?

+0

[Win32:How to crash?](http://stackoverflow.com/questions/2730447/win32-how-to-crash) – 2010-09-02 10:25:57

+0

確實非常接近。但我想知道最清潔的方式,而不是暴力方式。無論如何,感謝您的鏈接。 – Patrick 2010-09-02 17:59:20

回答

1

只需創建一個空指針指向某個具有某些成員函數的對象,然後調用其中的一個?也許做一個功能,讓你知道什麼daoes

void CrashApp() 
{ 
    MyObject * ptr = 0; 
    ptr->Function(); 
} 

當然你可以使用__debugbreak() intrinsic代替的DebugBreak()函數的最簡單的方法和最新的

1

會很清楚。這並沒有說什麼和EXCEPTION_BREAKPOINT崩潰

RaiseException()是另一種方式崩潰。

相關問題