2010-11-01 49 views
0

我想打印调试语句输出窗口(或其他任何地方,我可以看到它)在Visual Studio 2005中我见过的建议说使用打印在Visual Studio 2005安慰

OutputDebugString("message"); 

并确保我有

选项 - >调试 - >重定向所有输出窗口的文本即时窗口检查

而代码编译好,我没有看到任何输出,有什么诀窍?

+1

您是否已验证调试代码实际上是否已命中通过放置一个断点? – 2010-11-01 11:22:02

+0

您需要使用调试命令,而不是运行。 – 2010-11-01 11:30:32

+0

亚历克斯:我已经击中F5开始调试。 – opsb 2010-11-01 11:40:17

回答

0

您必须先在调试模式下运行。

然后使用下面的代码(从MSDN):

class Test{ 
static void Main() 
{ 
    Debug.Listeners.Add(new TextWriterTraceListener(Console.Out)); 
    Debug.AutoFlush = true; 
    Debug.Indent(); 
    Debug.WriteLine("Entering Main"); 
    Console.WriteLine("Hello World."); 
    Debug.WriteLine("Exiting Main"); 
    Debug.Unindent(); 
}} 

你会看到在输出窗口中的一切。您可能需要转到View-> Output菜单才能使此窗口在IDE中可见。

+0

对不起,我应该提到我正在使用C++。我猜这是C#? – opsb 2010-11-01 11:49:24

2

如果您使用的是OutputDebugString,那么您也可以使用SysInternal's DebugView来查看输出。在你解决你的Visual Studio调试问题之前,DebugView应该做到这一点。

+0

神奇的,完美的作品!我不能调试器工作,所以这至少会让我看到发生了什么。 – opsb 2010-11-01 12:05:38

0

Alt-2或View-> Output打开输出窗口。默认情况下,它应该已经打开,它通常位于IDE底部的选项卡式窗口中(但取决于您的自定义布局),并标记为“Output”。

输出不针对控制台,您需要输出到stdout,并为其创建控制台窗口。

+0

我的输出窗口打开,下拉框设置为调试。我看到模块被加载,并且来自IExplorer的消息(我附加的过程),但没有从OutputDebugString输出 – opsb 2010-11-01 12:03:45

+0

如果包含输出调用的进程不是您所连接的进程,您为什么期望得到输出! ?或者我误解了?它适用于我,虽然输出很容易在所有其他消息中丢失。 – Clifford 2010-11-01 13:16:42

0

如果你的代码不打的线,那么它可能:

人民币在VS的输出窗口:

alt text

检查,如果你有“程序输出”选中,如果是,检查它!!!

尽管此控件存在于输出窗口的上下文菜单中,但它在重定向它时会影响立即窗口中的输出。

+0

我确实有这个选项设置 – opsb 2010-11-01 12:10:25

+0

可能你可以尝试切换它吗?似乎你的调试器有一些问题,并且它处于不稳定的状态...... – 2010-11-01 12:15:59

+0

试过了,无济于事。它似乎是调试器启动的问题。我也无法打破任何断点。它肯定会启动调试器,因为菜单项Stop Debugging变为可用。 – opsb 2010-11-01 12:27:07