我正在尝试调试C#应用程序。方法:
System.Diagnostics.Debug.WriteLine("something");
应该做的工作,但在输出窗口(设置为“调试”并激活所有选项)我看不到我想写的一行。任何的想法? 感谢
编辑: 我正在使用VS2008
答案 0 :(得分:30)
在工具 - 选项 - 调试 - 常规下,有一个选项,将所有输出窗口文本重定向到立即窗口。确保已禁用。但是,默认情况下不是,所以我怀疑这是你的问题。您也可以检查您的立即窗口,看它是否在那里输出。
您可能还想尝试重置所有环境设置。 (工具 - 导入和导出设置 - 重置所有设置。)
答案 1 :(得分:25)
还值得检查 - 右键单击输出窗口,确保选中“程序输出”。
答案 2 :(得分:11)
您是否检查过以确保您在调试模式下进行编译?如果您在零售/发布模式下编译,您将看到此行为。
您应该能够在Visual Studio的工具栏上看到此信息。会有一个组合框,它会说Release或Debug。如果它显示Release,则将其切换到Debug。
在某些配置文件设置中,默认情况下此组合框不可见。您必须通过项目属性页面访问它。它将位于构建/编译选项卡上。
答案 3 :(得分:6)
除上述建议外,右键单击项目名称并选择属性,查看项目属性。完成后,单击 Build选项卡,然后单击右下角的 Advanced按钮。完成高级窗口后,请查看输出部分和调试信息:设置。当您处于调试模式时,应将其设置为完整。
答案 4 :(得分:4)
另外,请确保将“输出”窗口设置为显示“调试”输出,而不是“构建”输出等其他内容。
您应该看到它在“Debug”输出中加载了所有必需的程序集。
答案 5 :(得分:2)
您需要将系统的Console
显式添加为TraceListener
,以便输出显示在控制台中。根据微软的documentation,这段代码可以解决问题。这是C#代码,但我提供的链接包含其他.NET语言的示例。
using System;
using System.Data;
using System.Diagnostics;
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();
}
}
答案 6 :(得分:2)
我有同样的问题,通过选择显示调试:
调试 - > Windows - >输出
但是,我的输出现在仍然显示,所以我猜vs会隐藏Debug直到有实际数据被写出来。
答案 7 :(得分:1)
“在项目属性下启用Visual Studio托管过程 - > Debug为我解决了这个问题。
答案 8 :(得分:0)
如果使用快捷方式,请确保按F5
开始调试模式(不是Ctr + F5)。
F5 开始调试
CTRL + F5 在不调试的情况下启动
答案 9 :(得分:0)
我刚刚在Visual Studio 2010和2017中遇到过这个问题,这就是我为了让它工作而做的事情,我没有解释为什么它现在有效。
我做了什么让它发挥作用。 我创建了一个新的Windows窗体项目,并添加了一个按钮,按下后执行Console.WriteLine(“Test”)。我在输出窗口中看到“测试”。然后我加载了我的真实项目并添加了一个按钮来执行Console.WriteLine(“Test”),现在它产生了输出。进一步的Console.WriteLine语句从那时开始起作用。
答案 10 :(得分:0)
在我的Visual Studio 2017项目中,输出显示在立即窗口
中答案 11 :(得分:0)
如果其他所有方法均失败,请尝试重新启动Visual Studio。为我工作。
答案 12 :(得分:0)
您的调试输出可能会被发送到 Visual Studio 外部的新命令提示符,当您开始调试时该命令提示符会打开。如果您全神贯注于 VS 正在做的事情,很容易错过这一点!
答案 13 :(得分:0)
如何打开项目属性并转到链接器->系统->子系统并将其更改为控制台?我的设置为 Windows,但它仍然没有像往常一样显示在“输出”窗格中,但至少您可以看到一些东西。
答案 14 :(得分:0)
我的问题是,输出窗口是打开的,但是当我开始调试时,它立即消失了。 我发现,在调试时,我必须从 View->output 或 Ctrl+W,O 再次显示它。 然后它会留在那里。