modo più pulito per mandare in crash in modo esplicito una domanda?
-
26-09-2019 - |
Domanda
La mia applicazione ha personalizzato crash-gestione integrata (vedi John Robbins' eccellente libro su 'Applicazioni debug Windows'). Per provare questa funzionalità, ho sempre usato la funzione DebugBreak di Windows () e questo sempre funzionato perfettamente. Ma dal momento che Windows 7, chiamando questa funzione dice solo "un punto di interruzione è stato raggiunto" e si ferma l'applicazione senza chiamare i miei gestori di crash.
ho potuto sempre inserire questo codice nella mia applicazione per testare la funzionalità di crash-:
int *ptr = (int *)0xdeadbeef;
*ptr = 123456789;
o anche aggiungere diversi casi, nel caso in cui 0xDEADBEEF è un indirizzo valido:
int *ptr = (int *)0xdeadbeef;
*ptr = 123456789;
ptr = (int *)0L;
*ptr = 123456789;
ptr = (int *)0xffffffff;
*ptr = 123456789;
Ma mi chiedevo: non c'è un modo più pulito per mandare in crash l'applicazione sotto Windows
Soluzione
Basta creare un puntatore nullo a un oggetto con alcune funzioni membro una prova e chiamata uno di loro? E magari farlo in una funzione in modo da sapere ciò che essa daoes
void CrashApp()
{
MyObject * ptr = 0;
ptr->Function();
}
Sicuramente il modo più semplice e che cosa è abbastanza chiaro in corso
Altri suggerimenti
È possibile utilizzare __debugbreak () intrinseca invece di DebugBreak () funzione. Questo non dice nulla e si blocca con EXCEPTION_BREAKPOINT
RaiseException () è un altro modo di incidente.