Debug di progetti di DLL
Aggiornamento: novembre 2007
Le informazioni contenute in questo argomento sono valide per:
Edition |
Visual Basic |
C# |
C++ |
Web Developer |
---|---|---|---|---|
Express |
||||
Standard |
||||
Pro e Team |
Legenda tabella:
Applicabile |
|
Non applicabile |
|
Comando o comandi nascosti per impostazione predefinita. |
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:
Generazione 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
Generazione 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. A tale scopo, è possibile utilizzare la finestra di dialogo Pagine delle proprietà di <nomeprogetto>. 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 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 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 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 Punti di interruzione e punti di analisi. 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 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 Punti di interruzione e punti di analisi e Cenni preliminari sull'esecuzione di codice.
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:
Visualizzare la finestra di controllo immediato del debugger.
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.
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.
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
Concetti
Impostazioni di progetto per configurazioni di debug C#
Impostazioni di progetto per una configurazione di debug Visual Basic
Riferimenti
Impostazioni di progetto per una configurazione di debug C++