调试期间跳过了Debug.WriteLine。

8

我正在编写一个简单的C#代码,但是出现Debug.WriteLine("..");的部分被跳过了。例如:

WebClient wc = new WebClient();

        wc.Encoding = System.Text.Encoding.GetEncoding("ISO-8859-1");
        wc.DownloadStringCompleted += new DownloadStringCompletedEventHandler(SearchWordsDownloaded);

        Debug.WriteLine("test");
        wc.DownloadStringAsync(new Uri("SomeURL"));

为什么会发生这种情况?

“Flush” 可能 可以解决问题。您还可以在编写调试内容之前将“AutoFlush”设置为“true”。 - dialer
你是在说当逐行执行代码时,这一行被忽略了,还是"test"没有输出到你配置的目标位置? - Cᴏʀʏ
1
在WP7 SDK中没有flush。@Cory,在调试模式下我跳过了它,当我让它运行时也是如此。 - QKL
7
你正在进行调试构建吗?该项目是否定义了“DEBUG”符号? - Marc Gravell
4个回答

13

我发现在调试时,带有Debug.WriteLine()语句的代码被跳过了。不确定为什么,但DEBUG编译符号没有被设置。请打开项目属性页面,进入构建部分,在“条件编译符号”字段中输入“DEBUG”(无引号)。这将使调试器重新开始执行Debug语句。


这正是对我有用的答案。谢谢。有人知道在构建发布版本时添加DEBUG编译符号的影响吗? - userSteve
1
任何 Debug.Foo() 调用都将保留在编译后的代码中。如果没有 DEBUG 符号,这些调用将被删除(它们不会进入编译后的程序集)。因此,尽管像 Debug.WriteLine() 这样的东西可能什么也不做(因为它没有写入的地方),但是例如 Debug.Assert() 可能会运行断言并在断言失败时抛出异常。 - redcalx

3
只有在发布时运行代码时,它才会被跳过。
尝试清理解决方案并确保它处于调试模式,并在此代码段中添加断点,然后按F5。

不是针对我,关于Debug编译符号的答案请参见上面的回答。 - userSteve

1

如果Active Solution平台设置为x86或x64,我曾经遇到过跳过Debug.Writeline语句的情况。似乎只有在Configuration Manager设置为“Any CPU”时才能触发。


0

这是一篇旧文章,我在使用Visual Studio 2017中的Debug类和Trace类时遇到了Diagnostics问题。对于一些正在经历这个问题的人来说,在Visual Studio 2017中,我所做的就是复制控制台应用程序项目属性Build->General设置的配置。

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接