Share via


Visualizzazione Thread nel visualizzatore di concorrenza

La visualizzazione Thread è la visualizzazione più dettagliata e ricca di funzionalità disponibile nel visualizzatore di concorrenza. Nella visualizzazione Thread è possibile identificare i thread che eseguono codice durante un segmento di esecuzione e verificare se i thread stanno eseguendo o bloccando il codice per motivi di sincronizzazione, I/O o di altro tipo. I report della visualizzazione Thread inoltre profilano l'esecuzione dell'albero dello stack di chiamate e i thread di sblocco.

Quando i thread sono in esecuzione, il visualizzatore di concorrenza raccoglie campioni. Al termine dell'esecuzione di un thread, il visualizzatore esamina tutti gli eventi di cambio di contesto del sistema operativo per il thread. I cambi di contesto possono verificarsi perché:

  • Un thread è bloccato su una primitiva di sincronizzazione.
  • Il quantum di un thread scade.
  • Un thread esegue una richiesta di I/O di blocco.

Il visualizzatore di concorrenza classifica il thread e gli eventi di cambio di contesto e cerca nello stack di chiamate del thread le API di blocco conosciute. Visualizza le categorie di thread nella legenda attiva in basso a sinistra nella visualizzazione Thread. Nella maggior parte dei casi è possibile identificare la causa principale di un evento di blocco esaminando gli stack di chiamate che corrispondono agli eventi di cambio di contesto.

Se non esiste alcuna corrispondenza tra stack di chiamate, il visualizzatore di concorrenza usa il motivo di attesa fornito da Windows. Tuttavia, la categoria windows può essere basata su un dettaglio di implementazione e potrebbe non riflettere la finalità dell'utente. Ad esempio, Windows segnala il motivo di attesa per il blocco su un blocco di lettura/scrittura sottile nativo come I/O invece di sincronizzazione.

La visualizzazione Thread illustra anche le dipendenze tra thread. Ad esempio, se si individua un thread bloccato su un oggetto di sincronizzazione, è possibile trovare il thread che lo ha sbloccato. È possibile esaminare lo stack di chiamate per il thread di sblocco nel punto di cui ha sbloccato l'altro.

È possibile usare la visualizzazione Thread per:

  • Identificare i motivi per cui l'interfaccia utente di un'app non risponde durante alcune fasi di esecuzione.
  • Determinare la quantità di tempo trascorso in un blocco dovuto a sincronizzazione, I/O, errori di pagina e altri eventi.
  • Individuare il grado di interferenza da altri processi in esecuzione nel sistema.
  • Identificazione dei problemi di bilanciamento del carico per l'esecuzione parallela.
  • Trovare i motivi per la scalabilità non ottimale o non esistente. Ad esempio, il motivo per cui le prestazioni di un'app parallela non migliorano quando sono disponibili più core logici.
  • Individuazione del livello di concorrenza nell'app, per agevolare la parallelizzazione.
  • Identificare le dipendenze tra thread di lavoro e percorsi critici di esecuzione.

Usare la visualizzazione Thread

Per avviare il visualizzatore di concorrenza, selezionare Analizza>Visualizzatore di concorrenza e quindi selezionare un'opzione, ad esempio Avvia nuovo processo.

Il visualizzatore di concorrenza avvia l'app e raccoglie una traccia finché non si seleziona Arresta raccolta. Il visualizzatore quindi analizza la traccia e visualizza i risultati nella pagina del report di traccia.

Selezionare la scheda Thread in alto a sinistra nel report per aprire la visualizzazione Thread.

Threads view

Selezionare gli intervalli di tempo e i thread per avviare un'analisi delle prestazioni.

Analisi della sequenza temporale

La parte superiore della visualizzazione Thread è una sequenza temporale. La sequenza temporale indica l'attività di tutti i thread nel processo e di tutti i dispositivi disco fisici nel computer host. Vengono inoltre visualizzati l'attività della GPU e gli eventi marcatori.

L'asse x della sequenza temporale rappresenta il tempo mentre sull'asse y sono riportati diversi canali:

  • Due canali di I/O per ogni unità disco del sistema, un canale per la lettura e uno per la scrittura.
  • Un canale per ogni thread del processo.
  • Canali dei marcatori, se nella traccia sono presenti eventi marcatori. I canali dei marcatori vengono inizialmente visualizzati sotto i canali di thread che hanno generato tali eventi.
  • Canali GPU.

Inizialmente i thread sono disposti nell'ordine in cui vengono creati, quindi il thread principale dell'app è il primo. Selezionare un'altra opzione nell'elenco a discesa Ordina per e ordinare i thread in base a un altro criterio, ad esempio Esecuzione.

I colori della sequenza temporale indicano lo stato di un thread in un determinato momento. I segmenti verdi sono quelli in esecuzione, i segmenti rossi sono bloccati per la sincronizzazione, i segmenti gialli sono quelli con precedenza e i segmenti viola sono impegnati in operazioni di I/O del dispositivo.

È possibile fare zoom avanti per visualizzare altri dettagli oppure zoom indietro per visualizzare un intervallo di tempo più lungo. Selezionare segmenti e punti nel grafico per ottenere dettagli sulle categorie, gli orari di avvio, i ritardi e gli stati dello stack di chiamate.

Usare la sequenza temporale per esaminare il bilanciamento del lavoro tra i thread coinvolti in un ciclo parallelo o in attività simultanee. Se un thread richiede più tempo per il completamento rispetto agli altri, il lavoro potrebbe essere sbilanciato. È possibile migliorare le prestazioni dell'app distribuendo il lavoro in modo più uniforme tra i thread.

Se in un determinato momento solo un thread è in esecuzione, l'app potrebbe non sfruttare completamente la concorrenza nel sistema. È possibile usare il grafico della sequenza temporale per esaminare le dipendenze tra thread e le relazioni temporali tra i thread di blocco e quelli bloccati. Per riordinare i thread, selezionare un thread e quindi l'icona Su o Giù nella barra degli strumenti.

È possibile nascondere i thread che non sono in funzione o sono completamente bloccati perché le relative statistiche sono irrilevanti e potrebbero intasare i rapporti. Per nascondere i thread, selezionarne i nomi e quindi selezionare le icone Nasconde i thread selezionati oppure Nasconde tutto eccetto i thread selezionati nella barra degli strumenti. Per identificare i thread da nascondere, selezionare il collegamento Riepilogo per thread in basso a sinistra. È possibile nascondere i thread senza attività nel grafico Riepilogo per thread.

Dettagli sull'esecuzione dei thread

Per visualizzare informazioni più dettagliate su un segmento di esecuzione, selezionare un punto su un segmento verde della sequenza temporale. Il visualizzatore di concorrenza visualizza un cursore nero sopra il punto selezionato e ne indica lo stack di chiamate nella scheda Corrente del riquadro inferiore. È possibile selezionare più punti nel segmento di esecuzione.

Nota

Il visualizzatore di concorrenza potrebbe non essere in grado di risolvere una selezione in un segmento di esecuzione se la durata del segmento è inferiore a un millisecondo.

Per ottenere un profilo di esecuzione per tutti i thread non nascosti nell'intervallo di tempo attualmente selezionato, scegliere Esecuzione nella legenda in basso a sinistra.

Dettagli sul blocco dei thread

Per ottenere informazioni su una determinata area di un thread, passare il mouse sull'area nella sequenza temporale per visualizzare una descrizione comando, che contiene diverse informazioni, tra cui categoria, ora di inizio e ritardo. Selezionare l'area per visualizzare lo stack di chiamate relativo a quel punto nel tempo nella scheda Corrente del riquadro inferiore. Nel riquadro sono indicati anche la categoria, il ritardo, l'API di blocco, se presente, e l'eventuale thread di sblocco. Esaminando lo stack di chiamate, è possibile determinare i motivi sottostanti per gli eventi di blocco del thread.

Un percorso di esecuzione può avere alcuni eventi di blocco. Per esaminarli in base alla categoria di blocco e identificare le aree problematiche più rapidamente, selezionare una categoria di blocco nella legenda a sinistra.

Dipendenze tra thread

Il visualizzatore di concorrenza visualizza le dipendenze tra i thread in modo da stabilire cosa stava tentando di eseguire un thread bloccato e quale altro thread abbia abilitato l'esecuzione.

Per determinare quale thread ha sbloccato un altro thread, selezionare il segmento di blocco nella sequenza temporale. Se il visualizzatore di concorrenza è in grado di determinare il thread di sblocco, disegna una linea tra il thread di sblocco e il segmento di esecuzione che segue il segmento di blocco. Selezionare la scheda Stack di sblocco nel riquadro inferiore per visualizzare lo stack di chiamate pertinente.

Report dei profili

Il grafico della sequenza temporale che segue è un riquadro con le schede Rapporto profili, Corrente e Stack di sblocco del report. I report si aggiornano automaticamente quando si modifica la selezione della sequenza temporale e dei thread. Per le tracce di grandi dimensioni, il riquadro dei report può essere temporaneamente non disponibile durante il calcolo degli aggiornamenti.

Scheda Rapporto profili

La scheda Rapporto profili ha due filtri:

  • Per escludere le voci dell'albero delle chiamate che hanno richiesto un tempo minimo, digitare un valore di filtro compreso tra 0 e 99% nel campo Riduzione rumore in. Il valore predefinito è 2%.
  • Per visualizzare solo gli alberi delle chiamate per il codice, selezionare la casella di controllo Just My Code. Per visualizzare tutti gli alberi delle chiamate, deselezionare la casella di controllo.

La scheda Rapporto profili contiene i report per le categorie e i collegamenti nella legenda. Per visualizzare un report, selezionare una delle voci a sinistra:

  • Esecuzione Il report Esecuzione illustra il dettaglio del tempo che l'applicazione ha impiegato nell'esecuzione.

    Per trovare la riga di codice in cui è trascorso il tempo di esecuzione, espandere l'albero delle chiamate e scegliere Visualizza origine o Visualizza siti di chiamata dal menu di scelta rapida per la voce dell'albero delle chiamate. Visualizzazione origine consente di individuare la riga di codice eseguita. Visualizza siti di chiamata permette di individuare la riga di codice che ha chiamato la riga eseguita. Se esiste una sola riga di sito di chiamata, viene evidenziato il codice corrispondente. Se esistono diversi siti di chiamata, selezionarne uno nella finestra di dialogo e quindi selezionare Passa all'origine. È spesso molto utile individuare il sito di chiamata con il maggior numero di istanze, i tempi più elevati o entrambi. Per altre informazioni, vedere Report del profilo di esecuzione.

  • SincronizzazioneIl report Sincronizzazione illustra le chiamate responsabili dei blocchi di sincronizzazione, oltre ai tempi di blocco totali di ogni stack di chiamate. Per altre informazioni, vedere Periodo di sincronizzazione.

  • I/O Il report I/O illustra le chiamate responsabili dei blocchi di I/O, oltre ai tempi di blocco totali di ogni stack di chiamate. Per altre informazioni, vedere Tempo di I/O (visualizzazione Thread).

  • Sospensione Il report Sospensione illustra le chiamate responsabili dei blocchi di sospensione, oltre ai tempi di blocco totali di ogni stack di chiamate. Per altre informazioni, vedere Tempo di sospensione.

  • Gestione della memoria Il report Gestione della memoria illustra le chiamate in cui si sono verificati blocchi di gestione della memoria, oltre ai tempi di blocco totali di ogni stack di chiamate. Usare queste informazioni per identificare le aree che presentano problemi notevoli di paging o di Garbage Collection. Per altre informazioni, vedere Tempo di gestione della memoria.

  • Precedenza Il report Precedenza indica dove i processi nel sistema hanno avuto la precedenza sul processo corrente e i singoli thread che hanno sostituito i thread del processo corrente. È possibile usare queste informazioni per identificare i processi e i thread maggiormente responsabili della precedenza. Per altre informazioni, vedere Tempo di precedenza.

  • Elaborazione interfaccia utente Il report Elaborazione interfaccia utente indica le chiamate responsabili dei blocchi di elaborazione dell'interfaccia utente, oltre ai tempi di blocco totali di ogni stack di chiamate. Per altre informazioni, vedere Tempo di elaborazione dell'interfaccia utente.

  • Riepilogo per thread Selezionare Riepilogo per thread per visualizzare un grafo che illustra lo stato dei thread per l'intervallo di tempo attualmente selezionato. Le colonne di colori diversi indicano il tempo totale trascorso da ciascun thread nell'esecuzione, nel blocco, nell'I/O e in altri stati. I thread sono etichettati nella parte inferiore. Quando si modifica il livello di zoom nel grafico della sequenza temporale, il grafico viene aggiornato automaticamente.

    Con alcuni livelli di zoom, alcuni thread potrebbero non apparire nel grafico. In questo caso, a destra vengono visualizzati puntini di sospensione (...). Se il thread desiderato non è presente, è possibile nascondere gli altri thread. Per altre informazioni, vedere Report di riepilogo per thread.

  • Operazioni su disco Selezionare Operazioni su disco per visualizzare i processi e i thread coinvolti in operazioni di I/O su disco per il processo corrente, i file interessati (ad esempio, le DLL caricate), il numero di byte letti e altre informazioni. È possibile usare questo rapporto per valutare il tempo impiegato per accedere ai file durante l'esecuzione, specialmente se il processo sembra presentare vincoli di I/O. Per altre informazioni, vedere Report delle operazioni su disco.

Scheda Corrente

Questa scheda mostra lo stack di chiamate per un punto selezionato su un segmento di thread nel grafico della sequenza temporale. Gli stack di chiamate vengono tagliati per visualizzare solo l'attività correlata all'app.

Scheda Stack di sblocco

Questa scheda indica quale thread ha sbloccato il thread selezionato e lo stack di chiamate di sblocco.

Canali (visualizzazione Thread)

Nel visualizzatore di concorrenza appaiono quattro tipi di canali: canali di thread, canali di disco, canali di indicatore e canali GPU.

Canali di thread

Un canale di thread indica lo stato del thread, in base al colore, per un solo thread. Quando si posiziona il mouse sul nome del canale, viene visualizzata la funzione di avvio per il thread specificato. Il visualizzatore di concorrenza rileva diversi tipi di thread. I tipi più comuni sono descritti nella tabella seguente.

Thread Descrizione
Thread principale Il thread che ha avviato l'applicazione.
Thread di lavoro Thread creato dal thread principale dell'applicazione.
Thread processo di lavoro CLR Thread di lavoro creato da Common Language Runtime (CLR).
Supporto debugger Thread di lavoro creato dal debugger di Visual Studio.
Thread ConcRT Thread creato dal runtime di concorrenza di Microsoft.
Thread GDI Thread creato da GDIPlus.
Thread OLE/RPC Thread creato come thread di lavoro RPC.
Thread RPC Thread creato come thread RPC.
Thread Winsock Thread creato come thread Winsock.
Pool di thread Thread creato dal pool di thread RPC.

Canali di disco

I canali di disco corrispondono alle unità fisiche nel computer. Poiché esistono canali separati per le operazioni di lettura e scrittura per ogni unità fisica nel sistema, ogni unità ha due canali. I numeri di disco corrispondono ai nomi dei dispositivi Kernel. Un canale di disco viene visualizzato solo se era presente attività nel disco.

Canali di indicatore

I canali di indicatore corrispondono agli eventi generati dall'applicazione e dalle librerie usate dalla stessa. Ad esempio, Task Parallel Library, Parallel Patterns Library e C++ AMP generano eventi che vengono visualizzati come indicatori. Ogni canale di indicatore è associato un ID di thread, che viene visualizzato accanto alla descrizione del canale. L'ID identifica il thread che ha generato l'evento. La descrizione del canale include il nome del provider ETW (Event Tracing for Windows) che ha generato gli eventi. Se il canale visualizza eventi dall'SDK del visualizzatore di concorrenza, viene visualizzato anche il nome della serie.

Canali GPU

I canali GPU visualizzano informazioni sull'attività di DirectX 11 nel sistema. Ogni motore DirectX associato alla scheda grafica ha un canale separato. I singoli segmenti rappresentano il tempo trascorso per elaborare un pacchetto DMA.

Copia selezione

Per copiare l'intero stack di chiamate dalla scheda Report, fare clic su Copia. È quindi possibile incollare lo stack di chiamate in qualsiasi programma che supporta l'azione.

Scheda Corrente

Facendo clic sulla scheda Corrente, è possibile visualizzare uno stack di chiamate (se disponibile) che è più vicino al punto di selezione corrente nella sequenza temporale se è selezionato un segmento di thread della CPU. In questo caso, il punto di selezione è rappresentato da una freccia nera (o punto di inserimento) sopra la sequenza temporale. Quando viene selezionato un segmento di blocco, il punto di inserimento non viene visualizzato perché non è in esecuzione. Tuttavia, il segmento è ancora evidenziato e viene visualizzato uno stack di chiamate.

La scheda Corrente visualizza anche informazioni sui segmenti di attività di DirectX, marcatori e accesso I/O. Per i segmenti di attività di DirectX, vengono visualizzate le informazioni sul modo in cui vengono elaborati i pacchetti DMA dalla coda di hardware. Per i marcatori, vengono visualizzate informazioni sul tipo di marcatore e descrizione. Per l'accesso I/O, vengono visualizzate informazioni sui file e sul numero di byte letti o scritti.

Segmento della sequenza temporale vuoto

Nel visualizzatore di concorrenza, il motivo per cui una sezione della sequenza temporale è vuota (presenta uno sfondo bianco) dipende dal tipo di canale.

  • Per un canale di thread di CPU, significa che il thread non esisteva in quella parte della sequenza temporale. Se si è interessati al thread, è possibile trovare la relativa sezione in esecuzione usando il controllo zoom o lo scorrimento orizzontale.

  • Per un canale I/O, significa che non si è verificato alcun accesso al disco per conto del processo di destinazione in quel momento.

  • Per un canale di DirectX, significa che non è stata eseguita alcuna operazione GPU per conto del processo di destinazione in quella parte della sequenza temporale.

  • Per un canale di marcatore, significa che non sono stati generati marcatori.

Pulsante Esporta (visualizzatore di concorrenza)

Il pulsante Esporta consente di esportare lo stack di chiamate come file con estensione csv per i propri record o per l'uso con un altro strumento, ad esempio Microsoft Excel.

Just My Code (Visualizzazione thread)

Se si seleziona questa opzione, lo stack di chiamate verrà filtrato per mostrare solo il codice più un livello di funzioni chiamate attraverso lo stack di chiamate.

Attivando questa opzione, è possibile ridurre significativamente la complessità dello stack di chiamate e probabilmente semplificare la diagnosi di un problema specifico.

In alcuni casi, selezionando questa opzione la chiamata all'origine del blocco potrebbe risultare esclusa. Se sono necessari i dettagli dello stack di chiamate completo per determinare le cause, deselezionare questa opzione per esporre lo stack di chiamate completo.

Gestione dei canali

Nella visualizzazione Thread del visualizzatore di concorrenza è possibile organizzare i canali per il processo in modo da poter esaminare modelli specifici. È possibile ordinare i canali, spostarli verso l'alto o verso il basso e nasconderli o visualizzarli.

Ordina per

Il controllo Ordina per può essere usato per ordinare i thread in base a diversi criteri, sulla base del livello di zoom corrente. Ciò è particolarmente utile quando si sta cercando un determinato modello. È possibile ordinare i thread secondo i criteri seguenti:

Criteri Definizione
Ora di avvio Ordina i thread in base all'ora di inizio. Si tratta dell'ordinamento predefinito.
Ora di fine Ordina i thread in base all'ora di fine.
Esecuzione Ordina i thread in base alla percentuale di tempo trascorso in fase di esecuzione.
Sincronizzazione Ordina i thread in base alla percentuale di tempo trascorso in fase di sincronizzazione.
I/O Ordina i thread in base alla percentuale di tempo trascorso in fase di I/O (lettura e scrittura di dati).
Sospendi Ordina i thread in base alla percentuale di tempo trascorso in fase di sospensione.
Paging Ordina i thread in base alla percentuale di tempo trascorso in fase di paging.
Precedenza Ordina i thread in base alla percentuale di tempo trascorso in fase di precedenza.
Elaborazione interfaccia utente Ordina i thread in base alla percentuale di tempo trascorso in fase di elaborazione dell'interfaccia utente.

Spostare il canale selezionato verso l'alto o verso il basso

È possibile usare questi controlli per spostare un canale verso l'alto o verso il basso nell'elenco. Ad esempio, è possibile posizionare i canali correlati uno accanto all'altro in modo da poter esaminare un determinato modello o una relazione cross-thread.

Spostare il canale selezionato al primo o all'ultimo posto

È possibile spostare i canali selezionati al primo o all'ultimo posto dell'elenco in modo da poter esaminare un determinato modello o escludere alcuni canali quando si esaminano gli altri.

Nascondere i canali selezionati

Scegliere questo controllo quando si vogliono nascondere i canali. Ad esempio, se un thread è al 100% della sincronizzazione per la durata del processo gestito, è possibile nasconderlo mentre si analizzano altri thread.

Nota

Se un thread viene nascosto, verrà rimosso anche dal tempo di calcolo visualizzato nella legenda attiva e nei rapporti del profilo.

Visualizzare tutti i canali

Questo controllo è attivo quando uno o più canali vengono nascosti. Se si specifica questo controllo, tutti gli elementi nascosti vengono visualizzati e vengono inclusi nel calcolo del tempo.

Spostare i marcatori all'inizio

Se una traccia contiene eventi marcatori, è possibile usare questo comando per spostare i canali dei marcatori all'inizio della sequenza temporale. Viene comunque mantenuto il loro ordine relativo.

Raggruppare i marcatori in base ai thread

Se una traccia contiene eventi marcatori, è possibile usare questo comando per raggruppare i canali dei marcatori sotto il thread che ha generato gli eventi marcatori. I canali dei dischi vengono spostati all'inizio dell'elenco dei canali e i canali GPU vengono spostati alla fine.

Modalità misurazione attiva/non attiva

Tramite questo strumento è possibile misurare con precisione un periodo di tempo nella sequenza temporale. Per abilitare la modalità misurazione, fare clic sul pulsante di misurazione (con un'icona a forma di righello) e quindi trascinare nella sequenza temporale. Durante il trascinamento, si noti che l'area sotto il puntatore viene evidenziata in giallo e il tempo misurato viene visualizzato sulla barra degli strumenti a destra del pulsante. Questo valore viene calcolato in modo dinamico durante il trascinamento in modo da poter determinare immediatamente il tempo richiesto per un particolare evento. Quando si rilascia il pulsante del mouse, il valore rimane visibile.

È possibile ripetere il processo di misurazione, ma viene visualizzata solo la misurazione più recente. Fare clic di nuovo sul pulsante di misurazione per disattivare la modalità misurazione.

Percentuale di riduzione del rumore

Per impostazione predefinita, il valore dell'impostazione Percentuale di riduzione del rumore è 2. Solo le voci con una percentuale di tempo inclusivo maggiore o uguale a questa impostazione vengono visualizzate nell'albero delle chiamate. Modificando l'impostazione, è possibile controllare il numero di voci visualizzate nell'albero delle chiamate. Ad esempio, se si imposta il valore su 10 verranno visualizzate solo le voci dell'albero delle con un tempo inclusivo maggiore o uguale al 10%. Se si aumenta il valore dell'impostazione, è possibile concentrarsi sulle voci con maggiore impatto sulle prestazioni del processo.

Report basato sull'intervallo di tempo visibile

La visualizzazione Profilo mostra i report basati sull'intervallo di tempo e i canali attualmente visibili. Per visualizzare i dettagli per subset dei dati diversi, fare clic sugli elementi nella legenda.

È possibile trovare altre informazioni sui dati nei report Di visualizzazione thread.

Connettore pronto per il thread

Quando si fa clic su un segmento di blocco per visualizzare uno stack di chiamate e il relativo stack di sblocco, potrebbe essere visualizzato anche il connettore pronto per thread. Se l'evento di sblocco si è verificato su un altro thread nel processo corrente, il connettore pronto per thread identifica visivamente il thread e il segmento di esecuzione che hanno consentito al thread bloccato di riprendere l'esecuzione.

Indicatore della sequenza temporale

Quando si seleziona un punto nella sequenza temporale di un segmento di thread in esecuzione, sopra di esso viene visualizzato un indicatore di posizione nella sequenza temporale. Lo stack di chiamate visualizzato nella scheda dello stack corrente è quello più vicino nel tempo al punto in cui è stato fatto clic sul segmento. L'indicatore viene usato per associare lo stack di chiamate, visualizzato nella scheda Corrente, alle informazioni sul momento in cui è stato effettuato il campionamento. L'indicatore mostra la posizione esatta dello stack di chiamate, che rappresenta lo stack di chiamate più vicino alla posizione selezionata dall'utente.

Stack di sblocco

Se l'elemento del thread attualmente selezionato rappresenta un segmento bloccato che ha iniziato a essere eseguito in un secondo momento, dopo essere stato sbloccato da un altro thread nel processo corrente, in questa scheda viene visualizzato lo stack di chiamate per il thread che ha eseguito lo sblocco.

Profilo cronologia visibile

Il profilo cronologia visibile per la visualizzazione dei blocchi dei thread fornisce informazioni statistiche e collegamenti ai report. Quando si esegue lo zoom avanti o indietro oppure si nascondono o si visualizzano canali, i numeri nella legenda attiva cambiano per riflettere gli elementi presenti nella visualizzazione. Per visualizzare un report su un elemento nella legenda, fare clic sull'elemento.

Controllo zoom (visualizzazione Thread)

Il controllo zoom è un dispositivo di scorrimento che consente di ingrandire e ridurre la sequenza temporale, in modo da potersi concentrare sulle aree di particolare interesse. Poiché questo controllo esegue uno zoom avanti al centro della visualizzazione della sequenza temporale, centrare l'area di interesse prima di procedere.

Zoom avanti tramite trascinamento nella visualizzazione della sequenza temporale

Eseguendo uno zoom avanti tramite trascinamento nella visualizzazione della sequenza temporale, viene creata un'area evidenziata in giallo. Quando si rilascia il pulsante del mouse, la visualizzazione della sequenza temporale viene ingrandita sull'intervallo selezionato.

Zoom avanti e indietro tramite la rotellina del mouse

Fare clic su qualsiasi punto della sequenza temporale (per assicurarsi che abbia lo stato attivo del mouse), quindi premere CTRL e spostare la rotellina del mouse (in avanti per ingrandire lo zoom e indietro per ridurlo).