Share via


Debug di progetti di DLL

Di seguito sono elencati i modelli per la creazione di DLL:

  • (C++, C# e Visual Basic): Libreria di classi

  • (C++, C# e Visual Basic): Libreria di controlli Windows Forms

    Il debug di una libreria di controlli Windows è simile al debug di un progetto Libreria di classi. Nella maggior parte dei casi si effettua una chiamata al controllo Windows da un altro progetto. Quando si esegue il debug del progetto chiamante, è possibile eseguire l'istruzione del codice del controllo Windows, impostare i punti di interruzione ed eseguire altre operazioni di debug. Per ulteriori informazioni, vedere Controlli Windows Form.

  • (C# e Visual Basic): Libreria di controlli Web

    Per ulteriori informazioni, vedere Libreria di controlli Web (Codice gestito).

  • (C++): Controllo ActiveX MFC e controllo ActiveX MFC per Smart Device

    I controlli ActiveX sono controlli che possono essere scaricati attraverso Internet in un computer client, nonché visualizzati e attivati in pagine Web.

    Il debug dei controlli ActiveX è simile a quello di altri tipi di controlli poiché non possono essere eseguiti in modalità autonoma, ma devono essere incorporati in una pagina Web HTML. Per ulteriori informazioni, vedere Procedura: eseguire il debug di un controllo ActiveX.

  • (C++): DLL MFC per Smart Device

    Per ulteriori informazioni, vedere Tecniche di debug MFC.

In questa sezione vengono inoltre trattati i seguenti argomenti:

In questo argomento sono contenute le seguenti sezioni relative alla preparazione al debug di librerie di classi:

  • Compilazione di una versione di debug

  • Debug in modalità mista

  • Modifica delle configurazioni predefinite

  • Modalità di debug della DLL

  • Applicazione chiamante

  • Controlli in una pagina Web

  • Finestra di controllo immediato

Compilazione di una versione di debug

Indipendentemente dalla modalità di avvio del debug, accertarsi di compilare innanzitutto la versione di debug della DLL e che tale versione si trovi nella posizione prevista dall'applicazione. Anche se ciò potrebbe sembrare ovvio, è importante non omettere questo passaggio in quanto l'applicazione potrebbe rilevare una versione differente della DLL e caricarla. A questo punto, il programma continuerebbe l'esecuzione e non si riuscirebbe a comprendere il motivo per il quale il punto di interruzione non è stato raggiunto. Durante il debug, è possibile controllare le DLL caricate dal programma visualizzando la finestra Moduli del debugger. In questa finestra sono elencate le DLL o gli EXE caricati nel processo sottoposto a debug. Per ulteriori informazioni, vedere Procedura: utilizzare la finestra Moduli.

Affinché il debugger possa connettersi a codice scritto in C++, è necessario che venga generato l'elemento DebuggableAttribute. È possibile aggiungere automaticamente questo elemento al codice mediante il collegamento all'opzione del linker /ASSEMBLYDEBUG.

Debug in modalità mista

L'applicazione che chiama la DLL può essere scritta in codice gestito o nativo. Se la DLL gestita viene chiamata da codice nativo e si desidera eseguire il debug di entrambi, attivare sia il debugger del codice gestito sia quello del codice nativo. È possibile effettuare questa selezione nella finestra o nella finestra di dialogo Pagine delle proprietà di <Progetto>. L'esecuzione di questa operazione varia a seconda che il debug venga avviato dal progetto della DLL o da quello dell'applicazione chiamante. Per ulteriori informazioni, vedere Procedura: eseguire il debug in modalità mista.

Modifica delle configurazioni predefinite

Quando si crea un progetto di applicazione console mediante il modello di progetto, in Visual Studio vengono definite automaticamente le impostazioni necessarie per le configurazioni di debug e di rilascio. Se necessario, è possibile modificare tali impostazioni. Per ulteriori informazioni, vedere Impostazioni di progetto per una configurazione di debug C++, Impostazioni di progetto per le configurazioni di debug C#, Impostazioni di progetto per una configurazione di debug Visual Basic e Procedura: impostare le configurazioni di debug e rilascio.

Modalità di debug della DLL

In ciascun progetto descritto in questa sezione viene creata una DLL. Le DLL non possono essere eseguite direttamente, ma devono essere chiamate da un'applicazione, in genere un file EXE. Per ulteriori informazioni, vedere Creazione e gestione di progetti Visual C++. L'applicazione chiamante può soddisfare uno dei criteri seguenti:

  • Essere un'applicazione incorporata in un altro progetto della stessa soluzione di Visual Studio contenente la libreria di classi.

  • Essere un'applicazione esistente già distribuita in un computer di test o di produzione.

  • Trovarsi sul Web ed essere accessibile tramite un URL.

  • Essere un'applicazione Web contenente una pagina Web che incorpora la DLL.

Debug dell'applicazione chiamante

Per eseguire il debug di una DLL, iniziare con il debug dell'applicazione chiamante, che in genere è un file EXE o un'applicazione Web. Questo debug può essere eseguito in vari modi.

  • Se è disponibile un progetto per l'applicazione chiamante, è possibile aprirlo e avviare l'esecuzione dal menu Debug. Per ulteriori informazioni, vedere <PAVEOVER>Procedura: avviare l'esecuzione.

  • Se l'applicazione chiamante è un programma già distribuito in un computer di test o di produzione ed è già in esecuzione, è possibile stabilire una connessione. Utilizzare questa modalità se la DLL è un controllo ospitato in Internet Explorer oppure un controllo in una pagina Web. Per ulteriori informazioni, vedere <PAVE OVER> Procedura: eseguire la connessione a un processo in esecuzione.

  • È possibile eseguire il debug dal progetto di DLL. Per ulteriori informazioni, vedere Procedura: eseguire il debug da un progetto di DLL.

  • È possibile eseguire il debug dalla finestra Controllo immediato di°Visual Studio. In tal caso, la finestra Controllo immediato svolgerà il ruolo dell'applicazione.

Prima di iniziare il debug dell'applicazione chiamante, è possibile impostare un punto di interruzione nella libreria di classi. Per ulteriori informazioni, vedere Breakpoints and Tracepoints. Una volta raggiunto il punto di interruzione, è possibile eseguire il codice un'istruzione alla volta, osservandone l'esecuzione in ciascuna riga fino a isolare il problema. Per ulteriori informazioni, vedere <PAVEOVER> Cenni preliminari sull'esecuzione di codice.

Controlli in una pagina Web

Per eseguire il debug di un controllo in una pagina Web, creare una pagina di ASP.NET contenente tale controllo, se non esiste ancora. È quindi possibile impostare punti di interruzione sia nel codice della pagina Web che in quello del controllo e richiamare la pagina Web da Visual Studio.

Prima di iniziare il debug dell'applicazione chiamante, è possibile impostare un punto di interruzione nella DLL. Una volta raggiunto il punto di interruzione, è possibile eseguire il codice un'istruzione alla volta, osservandone l'esecuzione in ciascuna riga fino a isolare il problema. Per ulteriori informazioni, vedere Breakpoints and Tracepoints.

Finestra di controllo immediato

È possibile valutare le funzioni o i metodi nella DLL senza disporre di un'applicazione chiamante, ma eseguendo il debug in fase di progettazione e utilizzando la finestra Controllo immediato. Per eseguire questo tipo di debug, effettuare le seguenti operazioni dopo avere aperto il progetto di DLL:

  1. Visualizzare la finestra di controllo immediato del debugger.

  2. Per testare un metodo denominato Test nella classe Class1, creare un'istanza di un oggetto di tipo Class1 digitando il codice C# seguente nella finestra Controllo immediato. Questo codice gestito funziona per Visual Basic e C++ con opportune modifiche alla sintassi:

        Class1 obj = new Class1();
    

    In C# tutti i nomi devono essere completi. Inoltre, i metodi o le variabili devono trovarsi nell'ambito e nel contesto correnti della sessione di debug.

  3. Se il metodo Test accetta un parametro int, valutare Test nella finestra di controllo immediato, come indicato di seguito:

       ?obj.Test(10)
    

    Il risultato verrà indicato nella finestra di controllo immediato.

  4. Se si desidera continuare a eseguire il debug di Test, inserire un punto di interruzione nel metodo e valutare di nuovo la funzione:

       ?obj.Test(10);
    

    Quando verrà raggiunto il punto di interruzione, sarà possibile eseguire Test un'istruzione alla volta. Al termine dell'esecuzione di Test, nel debugger verrà ripristinata la modalità di progettazione.

Vedere anche

Riferimenti

Impostazioni di progetto per una configurazione di debug C++

Concetti

Impostazioni di progetto per le configurazioni di debug C#

Impostazioni di progetto per una configurazione di debug Visual Basic

Sicurezza del debugger

Altre risorse

Debug del codice gestito

Preparazione al debug: tipi di progetto Visual C++

Preparazione al debug: tipi di progetto C#, F# e Visual Basic