Nwlapcug.com


Come risolvere errore di asserzione di Visual C

Come risolvere errore di asserzione di Visual C


Le asserzioni sono un accantonamento effettuato dai compilatori di ANSI C/C++ per verificare l'integrità di un'istruzione di programmazione in fase di esecuzione. Un'asserzione è una macro o una funzione che accetta un'istruzione condizionale come parametro. Se la condizione non riesce, il programma viene interrotto con una finestra di dialogo che indica un errore di asserzione. Un buon esempio è incauto utilizzo dei puntatori. I puntatori sono indirizzi in memoria dove i dati o una voce di funzione punto si trova. Se la variabile puntatore non sta puntando a spazio di memoria utilizzabile e libera, o punti nello spazio in una zona proibita, quindi l'accesso a tale puntatore in fase di esecuzione possono causare un crash di sistema.

Istruzioni

1

Avviare Visual Studio. Selezionare il progetto dell'applicazione. Fare clic sul menu a discesa di più a destra nell'area di lavoro progetto. Essa mostra due voci: "Win32 Debug" e "Win32 Release." Scegliere "Win32 Debug."

2

Fare clic su "Build" nel menu di area di lavoro di progetto o selezionare "< nome del progetto di applicazione > costruire" per ricostruire l'applicazione in modalità di Debug.

3

Eseguire la nuova generazione all'interno di Visual Studio.

4

Nota le informazioni come nome del file di origine, numero di riga, nome del modulo o libreria quando viene visualizzato il messaggio "Errore di asserzione". Premere "Riprova" per eseguire il debug del codice sorgente.

5

Premere "Alt + 7" ("Alt" e poi "7", mentre è premuto Alt) per far apparire la finestra di Debug. Guardare nello stack di chiamate dall'alto verso il basso e andare per la prima funzione da codice sorgente dell'applicazione, ignorando le chiamate di sistema che fanno parte del codice generato dal compilatore.

6

Leggere la funzione di applicazione di una riga. Nota e tenere traccia di ogni parametro della funzione, variabile locale, globale e statica utilizzata. Cercare le variabili di puntatore utilizzate senza un'istruzione condizionale che controlla se il puntatore è NULL. Cercare di puntatori non inizializzati e gli indici di matrice andati fuori dai limiti.

7

Correggere gli errori di programmazione che si trovano in e/o intorno a questo pezzo di codice, possibilmente nella funzione padre o funzione precedentemente chiamata.

8

Seguire lo stack di chiamate debug per vedere quale linea nell'applicazione ha causato la violazione se l'errore non è stato ancora diagnosticato. Passaggio attraverso le chiamate nidificate per rilevare l'errore. Questi potrebbero essere una combinazione di MFC, chiamate di libreria e di sistema di Windows.

9

Utilizzare l'utilità "PageHeap.exe" per gli errori di riferimento Windows Heap della memoria complessi che non possono essere intercettati dal codice dell'applicazione di diagnostica di debug. Usare le informazioni fornite dal messaggio di asserzione per ulteriore monitoraggio.