Pergunta

Quero poder ver um carimbo de hora no início de todos os vestígios da janela de depuração do Visual Studio.

 [Time stamp here] The thread 'Win32 Thread' (0xcd0) has exited with code 0 (0x0).

 [Time stamp here] => CLR ProvideAssembly: AppDomainId: 1, Ref: 'msvcm90d...

Exemplo disso é o aplicativo Sysinternals - DebugView. O problema é que não posso ter depuração do Visual Studio e ouvir com a Debugview ao mesmo tempo, e não me sinto confortável em adicionar o carimbo de hora manualmente aos meus traçadores.

Foi útil?

Solução

Como o texto da janela de saída é somente leitura uma vez escrito, não há uma maneira fácil de fazer exatamente o que você deseja fazer. No entanto, é fácil fazer algo semelhante: anexar uma linha de registro de data e hora depois Novo texto é gravado na janela de saída. Isso tornará a janela de saída muito mais confusa, mas você terá seus horários.

Veja como isso funcionaria: primeiro, crie um suplemento do Visual Studio ou macro que prenda o PaneUpdated Evento do painel ativo da janela do Outlook. (Ver este tópico para como fazer isso com uma abordagem macro). Verifique, no manipulador de eventos, que pane.Name == "Debug" e ignore outros painéis. Segundo, quando você detecta um novo texto no painel de saída de depuração, anexe uma linha de carimbo de data e hora, como este:

public void AddTimestamp(DTE2 dte)
{
    // Retrieve and show the Output window.
    OutputWindow outWin = dte.ToolWindows.OutputWindow;

    pane = outWin.OutputWindowPanes.Item("Debug");
    }
    catch
    {
        pane = outWin.OutputWindowPanes.Add("Debug");
    }

    pane.OutputString("[timestamp: " + DateTime.Now.ToString() + "]\n");
}

Também é possível pré-acertar um registro de data e hora para cada linha, mas é muito mais difícil. Você já não pode alterar o texto na janela de saída (é somente leitura), mas pode limpar a janela e adicionar texto. Assim, você pode usar a mesma abordagem de manipulador de eventos acima para detectar alterações de texto, mas, em vez de anexar, você pode copiar o texto atual, adquirir registros de data e hora para quaisquer linhas que ainda não possuam registros de data e hora, limpe a janela e re-adiante o agora -With-timestamps texto. O problema é o desempenho quando a janela de saída fica grande. Então, você provavelmente teria que implementar uma espécie de "estampagem preguiçosa", que faz a inserção clara e a inserção em segundo plano, a fim de evitar matar seu IDE quando (como é comum) 100 de linhas de saída de depuração são emitidas em pouco tempo . Além disso, quando você limpa e se acumula, se você estiver selecionando o texto na janela de saída, sua seleção será perdida.

Pessoalmente, eu faria a coisa mais fácil e anexaria as linhas de data e hora, em vez da abordagem mais difícil de pré-pendência. Como as coisas no final da linha são difíceis de ver sem rolar, eu provavelmente garantiria que houvesse uma nova linha antes do registro de data e hora, para que o usuário veria cada lote de uma ou mais linhas de saída seguidas por uma linha de registro de data e hora.

É possível que haja uma maneira de conectar a janela de saída antes que o texto seja exibido, mas não consegui encontrar nenhum ponto de extensibilidade nas APIs de extensibilidade do VS.

Mais uma idéia: você sempre pode rolar sua própria janela de ferramenta, por exemplo, "saída de depuração de Ivan", que ouve eventos provenientes da janela de saída real e ecoa novas linhas (com registros de data e hora) para sua própria janela de ferramentas. Esta é provavelmente a opção mais difícil, mas deve fazer exatamente o que você deseja.

Outras dicas

Para adicionar uma nova resposta a um ANTIGO Pergunta, há um recurso no Extensão de Ferramentas de Power de Produtividade 2013 e Extensão de Ferramentas de Power de Produtividade 2015 que adicione uma margem de registro de data e hora à janela de saída, nenhum código necessário.

Eu estava procurando a mesma funcionalidade. O meu colega criou o $TICK Macro no campo da mensagem, imprimindo os carrapatos da CPU 'atuais'.

Dar uma olhada em essas dicas de Simon Chapman, também.

Eu também queria essa funcionalidade, então, eventualmente, escrevi uma extensão para fazê -lo (como Justin Grant sugerido na resposta aceita). Depois de usá -lo por um tempo, decidi que os registros de data e hora relativos eram ainda mais úteis para mim ao depurar. Se as pessoas quisessem timestamps absolutos, tenho certeza de que poderia adicionar essa funcionalidade de volta. De qualquer forma, se você estiver interessado, pode conferir em niahtextfilter.com.

E para mostrar os registros de data e hora relativos em ação em uma sessão de depuração do Visual Studio:Niah Text Filter debug output

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top