使用时
using System.Diagnostics;
和
Debug.WriteLine("Test");
运行应用程序后,在输出中看不到“测试”。但是,如果我改用 msgbox 函数,则会弹出 msgbox,因此到达该行。
我看错了窗口还是我必须改变什么?
我正在使用 VC# Express。
在菜单 > 工具 > 选项 > 调试 > 常规:
在项目属性 > 构建:
在输出窗口:
这种行为有两个可能的原因
Debug.WriteLine
调用不在最终程序中诊断此问题的最简单方法是将代码更改为
#if DEBUG
Console.WriteLine("the message");
#endif
如果它打印,那么您的跟踪侦听器有问题,否则您在 Release 中编译
我相信“Debug.WriteLine()”会写入Listeners集合。从那里您可以确定调试信息的写入位置。默认情况下,“输出”应该在它出现的位置,但是如果您在查看信息时遇到问题,请创建一个不同的侦听器来获取调试信息。
这是 MSDN 示例:
TextWriterTraceListener myWriter = new TextWriterTraceListener(System.Console.Out);
Debug.Listeners.Add(myWriter);
我不确定是否有人提到过这个原因,但是如果我在调试模式下编译然后只运行程序(Ctrl + F5)而不是选择开始调试(F5),我也不会看到Debug.WriteLine
。
所以仅仅在调试模式下编译是不够的,你还必须主动调试程序而不仅仅是运行它:)
Debug.WriteLine("Test");
当您处于调试模式时,应该显示在输出窗口中。如果您想调试正在运行的应用程序(发布模式),您可以使用 Trace,它会显示在 Windows 事件中。
对于任何使用谷歌搜索的人:虽然有各种答案指向删除配置文件中的侦听器,但也要注意
<remove name="OPTIONSVerbHandler" />
在该部分
<handlers>
因为这也会抑制调试输出。
对我有帮助的是选择“工具 => 选项 => 项目和解决方案 => 构建和运行 => MSBuild 项目构建输出详细程度”到“诊断”。之后,它刚刚开始在 Debug 块中显示调试输出,而没有添加任何侦听器。[你需要至少 10 声望才能发布图片。非常感谢 SO!]
将项目从 repo 中拉出后,启动按钮中的设置与应有的不同。它被设置为发布。如果您最终来到这里并且第一个答案不起作用,请检查它。
当错误地选择了发布时,使用 Trace 而不是 Debug 似乎也有效。