O programa C # a seguir (construído com csc hello.cs
) é impresso apenas Hello via Console!
no console e Hello via OutputDebugString
na janela DebugView. No entanto, não consigo ver nenhuma das System.Diagnostics.*
chamadas. Por que é que?
using System;
using System.Runtime.InteropServices;
class Hello {
[DllImport("kernel32.dll", CharSet=CharSet.Auto)]
public static extern void OutputDebugString(string message);
static void Main() {
Console.Write( "Hello via Console!" );
System.Diagnostics.Debug.Write( "Hello via Debug!" );
System.Diagnostics.Trace.Write( "Hello via Trace!" );
OutputDebugString( "Hello via OutputDebugString" );
}
}
Talvez haja algumas opções especiais de linha de comando necessárias para csc
?
Não estou usando o Visual Studio para nenhum dos meus desenvolvimentos, isso é puro material de linha de comando.
Respostas:
Como outros já apontaram, os ouvintes precisam ser registrados para ler esses fluxos. Observe também que
Debug.Write
funcionará apenas se oDEBUG
sinalizador de construção estiver definido, enquantoTrace.Write
funcionará apenas se oTRACE
sinalizador de construção estiver definido.A configuração dos sinalizadores
DEBUG
e / ouTRACE
é feita facilmente nas propriedades do projeto no Visual Studio ou fornecendo os seguintes argumentos ao csc.exefonte
Embora a depuração
System.Diagnostics.Debug.WriteLine
seja exibida na janela de saída ( Ctrl+ Alt+ O), você também pode adicionar umTraceListener
àDebug.Listeners
coleção para especificarDebug.WriteLine
chamadas para saída em outros locais.Nota: as
Debug.WriteLine
chamadas podem não ser exibidas na janela de saída se você tiver a opção Visual Studio "Redirecionar todo o texto da Janela de Saída para a Janela Imediata" marcada no menu Ferramentas → Opções → Depuração → Geral . Para exibir " Ferramentas → Opções → Depuração ", marque a caixa ao lado de " Ferramentas → Opções → Mostrar todas as configurações ".fonte
Você precisa adicionar um
TraceListener
para vê-los aparecer no console.Eles também aparecem na janela Saída do Visual Studio quando no modo Debug.
fonte
OutputDebugString()
e (kernel)DbgPrint().
Debug.Write()
se suas configurações de Captura incluírem "Global Win32" - o que requer executá-lo no modo Admin.Enquanto você estiver depurando no Visual Studio, exiba a janela "Saída" (Exibir-> Saída). Vai mostrar lá.
fonte
As mensagens de diagnóstico são exibidas na janela de saída.
fonte
Quando escrevo debug.write ("") no código, ele sai na "Janela imediata", não na "Janela de saída".
Você pode experimentá-lo. Para exibir a janela "Imediato" ( Depurar → Janela → Imediato ).
fonte
A solução para o meu caso é:
fonte
Para o VB.NET, o seguinte se aplica. Você deve selecionar "Depurar" E certifique-se de "Iniciar a depuração". Isso pode ser alcançado pressionando F5.
Além disso, o Console.WriteLine exibirá apenas mensagens ao criar como "Release" na sua janela Output.
Como mencionado anteriormente, abra a janela Saída com Exibir → Saída E selecione "Construir" se desejar ver as mensagens do Console.WriteLine ou "Depurar" se desejar ver as mensagens Debug.WriteLine ou Trace.WriteLine.
fonte