Debug.WriteLine什么都没显示
使用时
using System.Diagnostics;
和
Debug.WriteLine("Test");
运行应用程序后,输出中看不到“测试”。 但是,如果我使用msgbox函数,则会弹出msgbox,因此会到达该行。
我在错误的窗口寻找或者我需要改变什么?
我正在使用VC#Express。
这种行为有两种可能的原因
- 应用程序正在发布模式下编译,
Debug.WriteLine
调用不在最终程序中 - 程序中没有跟踪侦听器,因此无法输出消息
诊断此问题的最简单方法是将代码更改为
#if DEBUG Console.WriteLine("the message"); #endif
如果它打印,则跟踪侦听器存在问题,否则您将在Release中进行编译
在菜单>工具>选项>调试>常规:
- 确保未选中“将所有输出窗口文本重定向到即时窗口”
在项目属性>构建:
- 配置:调试
- 检查“定义DEBUG常量”
- 选中“定义TRACE常数”
在“输出”窗口中:
- 显示输出:Debug
- 在输出窗口中单击鼠标右键,确保选中“程序输出”
我相信“Debug.WriteLine()”会写入Listeners集合。 从那里,您可以确定将写入调试信息的位置。 默认情况下,“输出”应该是它出现的位置,但是如果您在查看信息时遇到问题,则创建一个不同的侦听器来获取调试信息。
这是MSDN示例:
TextWriterTraceListener myWriter = new TextWriterTraceListener(System.Console.Out); Debug.Listeners.Add(myWriter);
我不确定是否有人提到过这个原因,但如果我在Debug-mode中编译然后只运行程序(Ctrl + F5)而不是选择Start Debugging(F5),我也不会看到Debug.WriteLine
。
因此仅仅在调试模式下编译是不够的,你还必须主动调试程序而不是只运行它:)
Debug.WriteLine("Test");
当您处于调试模式时,应该在输出窗口中显示。 如果要调试正在运行的应用程序(发布模式),可以使用Trace,这将显示在Windows事件中。
答案很简单。 可能是你按ctrl + F5 ,这意味着启动而不调试。 只需按F5即可Start Debugging
模式。
对任何人谷歌搜索:虽然有各种答案指向删除配置文件中的听众也注意
在该部分
因为这也抑制了调试输出。
如果其他任何答案都不起作用。 尝试在Debug.WriteLine
行中放置一个断点,看看它是否被击中。
如果它没有被击中,原因是因为正在执行旧版本的代码。
要解决此问题,请先检查一下
资源
转到“工具 – 选项”
在项目和解决方案 – >构建和运行下选择“运行时,项目过期时”下的“始终构建”
并检查是否清除了临时文件。 检查这个SO问题
这对我有用。
如果即使失败也尝试重新启动VS. 大部分时间都有效。