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

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top