Partilhar via


Visualizar threads e tarefas na janela Pilhas Paralelas (C#, Visual Basic, C++)

A janela Parallel Stacks é útil para depurar aplicações multithread. Tem várias vistas:

Use a janela Pilhas Paralelas

Para abrir a janela Parallel Stacks, deve estar em uma sessão de depuração. Selecione Depurar>Windows>Parallel Stacks.

Controles da barra de ferramentas

A janela Parallel Stacks tem os seguintes controles de barra de ferramentas:

Captura de tela da barra de ferramentas na janela Pilhas Paralelas.

Ícone Controlo Descrição
caixa de combinação Threads/Tasks Threads/Tarefas caixa de seleção combinada Alterna a exibição entre pilhas de chamadas de threads e pilhas de chamadas de tarefas. Para obter mais informações, consulte vista de Tarefas e vista de Threads.
Mostrar apenas ícone sinalizado Mostrar apenas os itens sinalizados Mostra pilhas de chamadas apenas para os threads sinalizados em outras janelas do depurador, como a janela GPU Threads e a janela Parallel Watch.
Ícone Alternar Modo de Exibição Alternar modo de exibição de método Alterna entre exibições de pilha de chamadas e visualização de método . Para obter mais informações, consulte Method View.
Deslocar Automaticamente para o Ícone Atual Rolagem automática para o quadro de pilha atual Rola automaticamente o gráfico para que o quadro de pilha atual esteja em exibição. Esse recurso é útil quando você altera o quadro de pilha atual de outras janelas ou quando atinge um novo ponto de interrupção em gráficos grandes.
ícone de alternar zoom Alternar o controle de zoom Mostra ou oculta o controle de zoom à esquerda da janela.

Independentemente da visibilidade do controle de zoom, você também pode ampliar pressionando Ctrl e girando a roda do mouse, ou pressionando Ctrl+Shift++ para aumentar o zoom e Ctrl+Shift+- para reduzir.

Captura de tela da Barra de Ferramentas na janela Pilhas Paralelas 2022.

Ícone Controlo Descrição
caixa de combinação Threads/Tasks Threads/Tarefas caixa de seleção combinada Alterna a exibição entre pilhas de chamadas de threads e pilhas de chamadas de tarefas. Para obter mais informações, consulte vista de Tarefas e vista de Threads.
Ícone de filtro Filtro Controlo Mostra pilhas de chamadas apenas para o conjunto específico de threads em que você está interessado.
Mostrar apenas ícone sinalizado Mostrar apenas os itens sinalizados Mostra pilhas de chamadas apenas para os threads sinalizados em outras janelas do depurador, como a janela GPU Threads e a janela Parallel Watch.
Ícone Alternar Modo de Exibição Alternar modo de exibição de método Alterna entre exibições de pilha de chamadas e visualização de método . Para obter mais informações, consulte Method View.
Deslocar Automaticamente para o Ícone Atual Rolagem automática para o quadro de pilha atual Rola automaticamente o gráfico para que o quadro de pilha atual esteja em exibição. Esse recurso é útil quando você altera o quadro de pilha atual de outras janelas ou quando atinge um novo ponto de interrupção em gráficos grandes.
ícone de alternar zoom Alternar o controle de zoom Mostra ou oculta o controle de zoom à esquerda da janela.

Independentemente da visibilidade do controle de zoom, você também pode ampliar pressionando Ctrl e girando a roda do mouse, ou pressionando Ctrl+Shift++ para aumentar o zoom e Ctrl+Shift+- para reduzir.
Ícone de pesquisa Controlo de Pesquisa Com esse recurso, você pode pesquisar facilmente através de quadros de pilha e, em seguida, usar setas para navegar entre esses resultados.
ícone de guardar Guardar Controlo Permite-lhe guardar/exportar o conteúdo da janela de pilha paralela como uma imagem.
Ícone Código Externo Mostrar controle de código externo Usando este recurso, pode mostrar/ocultar as pilhas do código ou das bibliotecas externas.
Ícone Resumo do Copilot Resumir pilhas de chamadas A partir do Visual Studio 2022 versão 17.13 Preview 4, você pode escolher Resumir quando Copilot estiver instalado e ativado. Este botão abre a janela do Copilot Chat, pré-carregada com contexto relevante de thread, permitindo que o utilizador explore detalhes, incluindo os estados das threads, chamadas de função e correções sugeridas.

Ícones de quadro de pilha

Os ícones a seguir fornecem informações sobre os quadros de pilha ativos e atuais em todos os modos de exibição:

Ícone Descrição
Seta amarela Indica o local atual (quadro de pilha ativo) do thread atual.
ícone Threads Indica a localização atual (quadro de pilha ativo) de um thread não em execução atualmente.
Arqueiro verde Indica o quadro de pilha atual (o contexto atual do depurador). O nome do método está em negrito onde quer que apareça.
Ícone Descrição
Seta amarela Indica o local atual (quadro de pilha ativo) do thread atual.
ícone Threads Indica a localização atual (quadro de pilha ativo) de um thread não em execução atualmente.
Arqueiro verde Indica o quadro de pilha atual (o contexto atual do depurador). O nome do método está em negrito onde quer que apareça.
Erro de status Indica que o quadro de pilha atual tem aviso de status Crítico, como Deadlock.
Status excluído Indica o nó bloqueado.
informações de status Indica que o quadro de pilha atual tem informações adicionais, como Em espera por, Aguardar no bloqueio, pertencente a, etc.
Status bloqueado Indica que a tarefa atual está no estado bloqueado/em espera, etc.
Status em execução Indica a tarefa em execução no momento.

Itens do menu de contexto

Os seguintes itens de menu de atalho estão disponíveis quando você clica com o botão direito do mouse em um método no modo de exibição Threads ou modo de exibição Tarefas. Os últimos seis itens são os mesmos que na Janela de Pilha de Chamadas.

Captura de ecrã do Menu de Atalho na janela Pilhas Paralelas.

Item de menu Descrição
Bandeira Sinaliza o item selecionado.
Desmarcar Desmarca o item selecionado.
Congelar Congela o item selecionado.
Descongelar Descongela o item selecionado.
Mudar para o quadro O mesmo que o comando de menu correspondente na janela Call Stack. No entanto, na janela Parallel Stacks, um método pode estar em vários quadros. Você pode selecionar o quadro desejado no submenu para este item. Se um dos quadros de pilha estiver no thread atual, esse quadro será selecionado por padrão no submenu.
Ir para a tarefa ou Ir para a conversa Alterna para a vista de Tarefas ou de Threads , mantendo o mesmo quadro de pilha realçado.
Ir para o código-fonte Vai para o local correspondente na janela do código-fonte.
Ir para a desmontagem Vai para o local correspondente na janela Desmontagem.
Mostrar código externo Mostra ou oculta código externo.
Exibição hexadecimal Alterna entre exibição decimal e hexadecimal.
Mostrar discussões na fonte Sinaliza o local do thread na janela do código-fonte.
Informações de carregamento de símbolos Abre a caixa de diálogo Informações de Carregamento de Símbolos .
Configurações de símbolos Abre a caixa de diálogo Configurações de Símbolo.

Captura de tela do Menu Atalho na Janela Pilhas Paralelas 2022.

Item de menu Descrição
Cópia Copie o item selecionado.
selecione todos os quadros abaixo Seleciona todas as frames da pilha selecionada.
Bandeira Sinaliza o item selecionado.
Desmarcar Desmarca o item selecionado.
Congelar Congela o item selecionado.
Descongelar Descongela o item selecionado.
Mudar para o quadro O mesmo que o comando de menu correspondente na janela Call Stack. No entanto, na janela Parallel Stacks, um método pode estar em vários quadros. Você pode selecionar o quadro desejado no submenu para este item. Se um dos quadros de pilha estiver no thread atual, esse quadro será selecionado por padrão no submenu.
Ir para a tarefa ou Ir para a conversa Alterna para a vista de Tarefas ou de Threads , mantendo o mesmo quadro de pilha realçado.
Ir para o código-fonte Vai para o local correspondente na janela do código-fonte.
Ir para a desmontagem Vai para o local correspondente na janela Desmontagem.
Mostrar código externo Mostra ou oculta código externo.
Exibição hexadecimal Alterna entre exibição decimal e hexadecimal.
Mostrar discussões na fonte Sinaliza o local do thread na janela do código-fonte.
Informações de carregamento de símbolos Abre a caixa de diálogo Informações de Carregamento de Símbolos .
Configurações de símbolos Abre a caixa de diálogo Configurações de Símbolo.

Visualização de tópicos

Na visualização Threads, o quadro da pilha e o caminho da chamada do thread atual são realçados em azul. A localização atual do segmento é mostrada pela seta amarela.

Para alterar o quadro de pilha atual, clique duas vezes em um método diferente. Isso também pode alternar o thread atual, dependendo se o método selecionado faz parte do thread atual ou de outro thread.

Quando o gráfico de visualização de Threads é demasiado grande para caber na janela, surge um controlo de "Vista Panorâmica" na janela. Você pode mover o quadro no controle para navegar para diferentes partes do gráfico.

A ilustração a seguir mostra um thread que vai de Main para uma transição de código gerenciado para nativo. Seis threads estão no método atual. Dois threads continuam a usar Thread.Sleep, dois continuam a usar Console.WriteLine, e o thread atual continua a usar SyncTextWriter.WriteLine.

Captura de tela da Visualização Threads na janela Parallel Stacks.

A tabela a seguir descreve as principais características da visualização Threads:

Chamada Nome do elemento Descrição
1 Segmento ou nó da pilha de chamadas Contém uma série de métodos para um ou mais threads. Se o quadro não tiver linhas de seta conectadas a ele, o quadro mostrará todo o caminho de chamada para o(s) thread(s).
2 Destaque azul Indica o caminho de chamada do thread atual.
3 Linhas de seta Conecte nós para compor todo o caminho de chamada para o(s) thread(s).
4 Cabeçalho do nó Mostra o número de processos e threads para o nó.
5 Método Representa um ou mais quadros de pilha no mesmo método.
6 Dica de ferramenta sobre o método Aparece quando você passa o mouse sobre um método. No modo de exibição Threads, a dica de ferramenta mostra todos os threads, em uma tabela semelhante à janela Threads.

A ilustração a seguir mostra o thread principal em uma transição de código gerenciado para nativo. Cinco threads estão no método atual. Quatro threads continuam sendo executados no contexto do método S.C, enquanto um thread de trabalho continua em uma transição de código gerenciado para nativo, definindo o nome em um thread de trabalho.

Captura de tela da visualização Threads na janela Parallel Stacks 2022.

A tabela a seguir descreve as principais características da visualização Threads:

Chamada Nome do elemento Descrição
1 Segmento ou nó da pilha de chamadas Contém uma série de métodos para um ou mais threads. Se o quadro não tiver linhas de seta conectadas a ele, o quadro mostrará todo o caminho de chamada para o(s) thread(s).
2 Destaque azul Indica o caminho de chamada do thread atual.
3 Linhas de seta Conecte nós para compor todo o caminho de chamada para o(s) thread(s).
4 Cabeçalho do nó Mostra o número de processos/threads, o nome da thread e o ID da thread para o nó.
5 Método Representa um ou mais quadros de pilha no mesmo método.
6 Dica de ferramenta sobre o método Aparece quando você passa o mouse sobre um método. No modo de exibição Threads, a dica de ferramenta mostra todos os threads, em uma tabela semelhante à janela Threads.
7 Descrição do tópico Descrição do thread gerada por IA. A partir do Visual Studio 2022 versão 17.13 Preview 1, esta descrição está presente quando Copilot é instalado e ativado.

Vista de tarefas

Se seu aplicativo usa objetos System.Threading.Tasks.Task (código gerenciado) ou objetos task_handle (código nativo) para expressar paralelismo, você pode usar exibição Tarefas. Tarefas exibição mostra pilhas de chamadas de tarefas em vez de threads.

Na vista de Tarefas :

  • Pilhas de chamadas de threads que não estão a executar tarefas não são mostradas.
  • As pilhas de chamadas de threads que estão a executar tarefas são encurtadas visualmente na parte superior e inferior para mostrar os frames mais relevantes para as tarefas.
  • Quando várias tarefas estão num encadeamento, as pilhas de chamadas dessas tarefas são mostradas em nós separados.

Para ver uma pilha de chamadas inteira, mude de volta para a visualização Threads clicando com o botão direito do mouse num quadro de pilha e selecionando Ir para Thread.

A ilustração a seguir mostra o modo de exibição Threads na parte superior e o modo de exibição Tarefas correspondente na parte inferior.

Captura de ecrã das vistas Tópicos e Tarefas.

Passe o cursor sobre um método para mostrar uma dica de ferramenta com informações adicionais. Na vista Tarefas, a dica de ferramenta mostra todas as tarefas numa tabela semelhante à da janela Tarefas.

A imagem a seguir mostra a dica de ferramenta para um método na visão Threads na parte superior e para a visão correspondente Tarefas na parte inferior.

Captura de tela das dicas sobre Threads e Tarefas.

Visualização do método

A partir da vista Threads ou vista Tarefas, pode dinamizar o gráfico no método atual selecionando o ícone Toggle Method View na barra de ferramentas. Vista de Método mostra de relance todos os métodos em todos os threads que chamam ou são chamados pelo método atual. A ilustração a seguir mostra como as mesmas informações aparecem na vista Threads à esquerda e na vista de Método à direita.

Se você alternar para um novo quadro de pilha, você torna esse método o método atual e de exibição de método mostra todos os chamadores e destinatários para o novo método. Isso pode fazer com que alguns threads apareçam ou desapareçam da exibição, dependendo se esse método aparece em suas pilhas de chamadas. Para retornar à exibição da pilha de chamadas, selecione novamente o ícone da barra de ferramentas Method View.

Depurar threads e tarefas com pilhas paralelas vídeo tutorial

Estes tutoriais em vídeo demonstram como os/as utilizadores podem usar as vistas Threads e Tarefas da janela Pilhas Paralelas no Visual Studio 2022 para depurar os seus aplicativos multithread.