2012-10-06 70 views
6

我正在编写一个简单的C#代码,但出现Debug.WriteLine("..");的部分会被跳过。例如:在调试时跳过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")); 

为什么会这样呢?

+0

'Flush' *可能*解决问题。在编写调试内容之前,您还可以将'AutoFlush'设置为'true'。 – dialer

+0

您是否在逐句通过代码行时忽略该行,或者“test”没有输出到您的已配置目标? –

+1

WP7 SDK中没有刷新。 @Cory,当我逐步进入调试模式时,以及当我让它运行时,它会被跳过。 – QKL

回答

1

可以跳过的唯一方法是在发行版中运行它。

尝试清理解决方案并确保它处于调试模式,并在此代码段中添加一个断点并按F5键。

+0

不适合我,请参阅上面关于调试编译符号的回答 – userSteve

7

我看到了这个 - Debug.WriteLine()语句被连接调试器跳过了调试版本。不知道为什么,但没有设置DEBUG编译符号。转到项目属性页面,构建部分,并在“条件编译符号”字段中输入“DEBUG”(不含引号)。这导致调试器再次开始输入Debug语句。

+0

这正是为我工作的答案。谢谢。任何人都知道在构建发布版本时添加DEBUG编译符号的含义? – userSteve

+1

任何Debug.Foo()调用都将保留在编译后的代码中。如果没有DEBUG符号,那些调用将被删除(它们不会将其编译到编译后的程序集中)。因此,虽然像Debug.WriteLine()这样的东西可能不会做任何事情(因为它无处可写),但Debug.Assert()实例可能会运行断言并在断言失败时抛出异常。 – redcalx

0

如果Active Solution平台设置为x86或x64,我已经让它跳过Debug.Writeline语句。看起来他们只能在配置管理器设置为“任何CPU”时才能被击中