Condividi tramite


Debug di applicazioni multithreading in Visual Studio

Un thread è una sequenza di istruzioni in base alla quale il sistema operativo esegue l'allocazione del tempo processore. Ogni processo in esecuzione nel sistema operativo è composto da almeno un thread. I processi composti da più di un thread sono detti multithreading.

I computer multiprocessore, i processori multicore e i processi hyperthreading sono in grado di eseguire contemporaneamente più thread. Se da un lato l'elaborazione parallela di più thread può migliorare notevolmente le prestazioni dei programmi, dall'altro può rendere il debug più difficoltoso poiché introduce la necessità di tenere traccia di più thread.

Il multithreading introduce inoltre nuovi tipi di possibili bug. Accade spesso, ad esempio, che due o più thread debbano accedere alla stessa risorsa, alla quale però può accedere un solo thread alla volta. Deve necessariamente esistere una qualche forma di esclusione reciproca per garantire l'accesso alla risorsa di un solo thread alla volta. Se l'esclusione reciproca non viene eseguita in modo corretto, può venirsi a creare una condizione di deadlock in cui non è possibile eseguire alcun thread. I deadlock possono rappresentare un problema particolarmente difficile da risolvere con il debug.

Visual Studio 2012 fornisce una finestra Thread migliorata, la nuova finestra Thread GPU, la nuova finestra Espressioni di controllo in parallelo e altri miglioramenti dell'interfaccia utente per eseguire più facilmente il debug multithreading. Il modo migliore per acquisire altre informazioni sulle nuove funzionalità dell'interfaccia di threading consiste nell'eseguire le procedure dettagliate. Vedere Procedura dettagliata: debug di un'applicazione multithreading e Procedura dettagliata: debug di un'applicazione C++ AMP.

Visual Studio offre anche potenti punti di interruzione e punti di analisi che possono rivelarsi molto utili per il debug di applicazioni multithreading. È possibile applicare filtri dei punti di interruzione per inserire punti di interruzione in corrispondenza di singoli thread. Vedere Punti di interruzione: utilizzare passaggi, funzioni sullo stack di chiamate e condizioni per interrompere nel punto e nel momento desiderati il debugger di Visual Studio

Il debug di un'applicazione multithreading dotata di un'interfaccia utente può essere particolarmente complesso. In tal caso, potrebbe essere necessario eseguire l'applicazione in un secondo computer e utilizzare il debug remoto. Per informazioni, vedere Debug e diagnostica remoti.

In questa sezione

Sezioni correlate

Vedere anche

Altre risorse

Debug di thread e processi in Visual Studio

Debug e diagnostica remoti