Usando a janela de tarefas paralelas
O Tarefas paralelas janela semelhante a segmentos janela, exceto que ele mostra informações sobre cada System.Threading.Tasks.Task ou task_handle objeto em vez de cada segmento. Como os threads, tarefas representam as operações assíncronas que podem ser executados simultaneamente; No entanto, várias tarefas podem ser executado no mesmo thread.
No código gerenciado, você pode usar o Tarefas paralelas janela quando você trabalha com System.Threading.Tasks.Task objetos. Para obter mais informações sobre tarefas em código gerenciado, consulte Programação em paralela a.NET Framework.
No código nativo, você pode usar o Tarefas paralelas janela quando você trabalha com grupos de tarefas, algoritmos paralelos, agentes assíncronos, e tarefas leves. Para obter mais informações sobre tarefas em código nativo, consulte Runtime de simultaneidade.
Você pode usar o Tarefas paralelas janela sempre que você separar o depurador. Você pode acessar o Debug menu clicando Windows e, em seguida, clicando em Tarefas paralelas. A ilustração a seguir mostra a Tarefas paralelas janela no modo padrão.
Observação |
---|
No código gerenciado, um Task que tem um status de Created, WaitingForActivation, ou WaitingToRun pode não estar visível na janela de tarefas em paralelo, se o thread no qual ele foi criado ou agendado está em um estado de suspensão ou associação. |
Informações de coluna de tarefas paralelas
As colunas da Tarefas paralelas janela Mostrar as informações a seguir.
Column Name |
Description |
---|---|
Sinalizadores |
Mostra quais tarefas são sinalizadas e permite sinalizar ou remover o sinalizador de uma tarefa. |
Icons |
Uma seta amarela indica que a tarefa atual. A tarefa atual for o mais alto no thread atual. Uma seta branca indica que a tarefa de quebra, ou seja, aquele que era o atual quando o depurador foi invocado. O ícone de pausa indica uma tarefa que congelou pelo usuário. Você pode congelar e Descongelar uma tarefa clicando na lista. |
ID |
Um número fornecido pelo sistema para a tarefa. Em código nativo, isso é o endereço da tarefa. |
Status |
O estado atual (agendado, executando, travado ou aguardando) da tarefa. Uma tarefa agendada é aquele que ainda não foi executada e, portanto, ainda não tem uma pilha de chamadas, o thread atribuído ou informações relacionadas. Uma tarefa em execução é aquele que estava executando código antes de dividir no depurador. Uma tarefa de espera é aquele que está bloqueada porque está aguardando um evento deve ser sinalizado, um bloqueio ser liberado ou outra tarefa seja concluída. Um deadlock é uma tarefa de espera, cujo thread está travado com outro thread. Focalize o Status a célula de uma tarefa de deadlock ou aguardando obter mais informações sobre o bloco.
Observação
O Tarefas paralelas janela relatórios deadlock somente para uma tarefa bloqueada que usa um primitivo de sincronização é suportado pela WCT Wait Chain Traversal ().Por exemplo, para um deadlock Task o objeto, que usa a WCT, o depurador relatórios travado em espera.Para uma tarefa de deadlock é gerenciada pelo Runtime de simultaneidade, que não usam a WCT, informa o depurador Aguardando.Para obter mais informações sobre a WCT, consulte Wait Chain Traversal.
|
Location |
O local atual na pilha de chamadas da tarefa. Focalize a essa célula para ver a pilha de chamadas inteira para a tarefa. Tarefas agendadas não tem um valor nessa coluna. |
Task |
O método inicial e quaisquer argumentos que foram passados para a tarefa, quando ele foi criado. |
Parent |
A ID da tarefa que criou esta tarefa. Se isso estiver em branco, a tarefa não tem um pai. Isso é aplicável somente para programas gerenciados. |
Atribuição de thread. |
A ID e o nome do thread no qual a execução da tarefa. |
AppDomain |
Para código gerenciado, o domínio de aplicativo no qual a tarefa está em execução. |
task_group |
Para código nativo, o endereço da task_group o objeto que a tarefa agendada. Para agentes assíncronos e tarefas leves, esta coluna é definida como 0. |
Você pode adicionar colunas ao modo de exibição clicando um título de coluna e selecionando as colunas que você deseja. (Remover colunas desmarcando as seleções). Você também pode reordenar as colunas arrastando-os para esquerda ou direita. No menu de atalho da coluna é mostrado na ilustração a seguir.
Tarefas de classificação
Para classificar tarefas por critérios de coluna, clique no cabeçalho de coluna. Por exemplo, clicando no ID cabeçalho de coluna, você pode classificar as tarefas por identificação da tarefa: 1,2,3,4,5 e assim por diante. Para inverter a ordem de classificação, clique no cabeçalho da coluna novamente. A ordem de classificação e a coluna de classificação atual é indicada por uma seta na coluna.
Agrupamento de tarefas
Você pode agrupar tarefas com base em qualquer coluna na exibição de lista. Por exemplo, clicando com o Status cabeçalho de coluna e clicando em grupo por Status, você pode agrupar todas as tarefas que têm o mesmo status. Por exemplo, você pode ver rapidamente as tarefas de espera para que você pode focalizar por que elas são bloqueadas. Você também pode recolher um grupo que não seja de interesse durante a sessão de depuração. Da mesma maneira, você pode agrupar por outras colunas. Um grupo pode ser (DES) sinalizado apenas clicando no botão ao lado do cabeçalho de grupo. A ilustração a seguir mostra a Tarefas paralelas janela no modo agrupado.
Exibição-filho pai
(Este modo de exibição é disponível somente para código gerenciado.) Direito do mouse em um cabeçalho de coluna e, em seguida, clicando em Exibição pai-filho, você pode alterar a lista de tarefas para uma exibição hierárquica, no qual todos os filhos a tarefa é um subnó que pode ser exibido ou oculto sob seu pai. A ilustração a seguir mostra as tarefas no modo de exibição de pai-filho.
A sinalização de tarefas
Você pode sinalizar uma tarefa clicando com o botão direito no item de lista de tarefa e, em seguida, clicando em sinalizador, ou clicando no ícone do sinalizador na primeira coluna. Se o sinalizador de várias tarefas, você pode, em seguida, classificar a coluna do sinalizador de colocar todas as tarefas sinalizadas no início, para que você possa se concentrar apenas neles. Você também pode usar o Paralela pilhas janela para exibir apenas tarefas de sinalizado. Este permite filtrar tarefas que não está interessado para depuração. Sinalizadores não são persistentes entre sessões de depuração.
Congelamento e descongelamento de tarefas
Você pode congelar o thread no qual uma tarefa está sendo executado, clicando com o botão direito no item de lista de tarefa e, em seguida, clicando em Congelar o Thread atribuído. (Se uma tarefa já está congelada, o comando é Descongelar atribuído Thread.) Quando você congela um thread, esse segmento não será executado quando você depurar o código após o ponto de interrupção atual. O Congelar todos os Threads, mas este comando congela todos os threads, exceto aquele que está executando o item da lista de tarefas.
A ilustração a seguir mostra os outros itens de menu para cada tarefa.
Consulte também
Tarefas
Usando a janela de pilhas paralela
Demonstra Passo a passo: Depurando um aplicativo paralelo
Conceitos
Programação em paralela a.NET Framework
Outros recursos
Histórico de alterações
Date |
History |
Motivo |
---|---|---|
Março de 2011 |
Informações sobre como o depurador relata deadlocks adicionadas. |
Aprimoramento de informações. |