Condividi tramite


Guida introduttiva: Eseguire il debug con C++ usando il debugger di Visual Studio

Il debugger di Visual Studio offre molte funzionalità potenti che consentono di eseguire il debug delle app. Questo argomento offre un modo rapido per apprendere alcune delle funzionalità di base.

Creare un nuovo progetto

  1. Aprire Visual Studio e creare un progetto.

    Se la finestra Start non è già aperta, selezionare File > Finestra di avvio. Nella finestra Start selezionare Crea un nuovo progetto. Nella casella di ricerca digitare "Progetto vuoto" e quindi selezionare il modello Progetto vuoto C++.

    Se il modello di progetto non viene visualizzato, aprire il programma di installazione di Visual Studio. Scegliere il carico di lavoro Sviluppo di applicazioni desktop con C++ e quindi scegliere Modifica.

    Visual Studio crea il progetto.

    Creare un nuovo file di origine denominato MyDbgApp.cpp

  2. In MyDbgApp.cpp sostituire il codice seguente

    int main()
    {
        return 0;
    }
    

    con questo codice (non rimuovere #include "stdafx.h"):

    #include <list>
    #include <iostream>
    
    using namespace std;
    
    void doWork()
    {
        list <int> c1;
    
        c1.push_back(10);
        c1.push_back(20);
    
        const list <int> c2 = c1;
        const int &i = c2.front();
        const int &j = c2.front();
        cout << "The first element is " << i << endl;
        cout << "The second element is " << j << endl;
    
    }
    
    int main()
    {
        doWork();
    }
    

Imposta punto di interruzione

Un punto di interruzione è un indicatore che indica dove Visual Studio deve sospendere il codice in esecuzione in modo da poter esaminare i valori delle variabili o il comportamento della memoria oppure se viene eseguito o meno un ramo di codice. È la funzionalità più semplice per il debug.

  1. Per impostare il punto di interruzione, fare clic sulla barra a sinistra della doWork chiamata di funzione oppure selezionare la riga di codice e premere F9.

    Impostare un punto di interruzione

  2. A questo punto premere F5 o scegliere Debug > Avvia debug.

    Raggiungi un punto di interruzione

    Il debugger sospende dove si imposta il punto di interruzione. L'istruzione in cui viene sospesa l'esecuzione del debugger e dell'app è indicata dalla freccia gialla. La riga con la chiamata di doWork funzione non è ancora stata eseguita.

    Suggerimento

    Se si dispone di un punto di interruzione in un ciclo o in una ricorsione o se si dispone di molti punti di interruzione di frequente, usare un punto di interruzione condizionale per assicurarsi che il codice venga sospeso SOLO quando vengono soddisfatte condizioni specifiche. Un punto di interruzione condizionale consente di risparmiare tempo e può anche semplificare il debug dei problemi difficili da riprodurre.

    Quando si tenta di eseguire il debug degli errori correlati alla memoria in C++, è anche possibile usare i punti di interruzione per esaminare i valori degli indirizzi (cercare NULL) e i conteggi dei riferimenti.

Esistono comandi diversi per indicare al debugger di continuare. Viene illustrato un comando di spostamento del codice utile disponibile a partire da Visual Studio 2017.

Mentre si è sospesi in corrispondenza del punto di interruzione, passare il puntatore del mouse sull'istruzione c1.push_back(20) fino a quando non viene visualizzato il pulsante verde Esegui fino a clicRun to Click e quindi premere il pulsante Esegui fino a clic.

Esegui con clic

L'app continua l'esecuzione chiamando doWork e si sospende sulla riga di codice sulla quale hai fatto clic sul pulsante.

I comandi da tastiera comuni usati per scorrere il codice includono F10 e F11. Per istruzioni più approfondite, vedere Prima di tutto esaminare il debugger.

Esaminare le variabili in una descrizione dati

  1. Nella riga di codice corrente (contrassegnata dal puntatore di esecuzione giallo) passare il puntatore del mouse sull'oggetto c1 per visualizzare una descrizione dati.

    Visualizzare un datatip

    Il datatip mostra il valore corrente della variabile c1 e consente di esaminarne le proprietà. Quando si esegue il debug, se viene visualizzato un valore non previsto, è probabile che si verifichi un bug nelle righe di codice precedenti o chiamanti.

  2. Espandi la descrizione dettagliata per esaminare i valori correnti delle proprietà dell'oggetto c1.

  3. Se vuoi fissare la descrizione dei dati per continuare a vedere il valore di c1 durante l'esecuzione del codice, fai clic sull'icona a forma di piccola puntina. Puoi spostare il datatip bloccato in una posizione comoda.

Modificare il codice e continuare il debug

Se si identifica una modifica che si vuole testare nel codice durante una sessione di debug, è anche possibile eseguire questa operazione.

  1. Fare clic sulla seconda istanza di c2.front() e passare c2.front() a c2.back().

  2. Premere F10 (o Debug > Passa sopra) alcune volte per avanzare il debugger ed eseguire il codice modificato.

    Modifica e continua

    F10 sposta in avanti il debugger un'istruzione alla volta, ma esegue passaggi sulle funzioni invece di eseguirle (il codice ignorato continua a essere eseguito).

Per altre informazioni sull'uso di modifiche e continuazione e sulle limitazioni delle funzionalità, vedere Modifica e continuazione.

Passaggi successivi

In questa esercitazione si è appreso come avviare il debugger, eseguire il codice ed esaminare le variabili. È possibile ottenere un'analisi generale delle funzionalità del debugger insieme ai collegamenti ad altre informazioni.