如何把Windows Phone的debug信息输出到Visual Studio的Output窗口

在Windows Mobile上输出Debug信息,非常简单,可以直接使用Console.WriteLine,但是Windows Phone上不能使用这个方法了,其实也很简单,也就是一句话。

System.Diagnostics.Debug.WriteLine("Debug Message");

 

做法很简单,而且release版本会自动屏蔽了这些信息,非常实用,我在应用程序生命周期的视频中也用过这个方法,下面重点讲述一下为什么需要用这个函数。
根据自己的经验,原因有两个:
1.使用MVVM的时候,事件转换成预先定义的Command,这些commands在数据绑定的时候把delegate绑定到xaml上,因此,运行时是不能调试的(debug版本可以)。其实这不是主要原因,或者说根本原因,因为MVVM的一个特征是testable(可测试性),本人非常热爱TDD(单元测试驱动开发),更多的逻辑应该通过单元测试来判断而不是打印debug信息。

2.处理tombstone的时候,现在开发Windows Phone 7的程序,很多时间花在tombstone的处理上,我觉得“tombstone的处理”成为一个可用程序与一个好用程序的重要区别。目前为止,我觉得单元测试tombstone还是非常困难,因此Debug.WriteLine()成为我的选择。

作者:Jake LinJake's Blog on 博客园
出处:http://procoder.cnblogs.com

作品Jake Lin创作,采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。 任何转载必须保留完整文章,在显要地方显示署名以及原文链接。如您有任何疑问或者授权方面的协商,请给我留言
posted @ 2011-03-03 07:50 Jake Lin 阅读(1067) 评论(3) 编辑 收藏

 回复 引用 查看   
#1楼 2011-03-03 09:50 vvGO      
顶林老师~~hoho~~wp7看完了您的视频系列,受益匪浅
我控制台调试一直用的System.Diagnostics.Debug.WriteLine("Debug Message");
没想到里面还有这么些道理 嘿嘿

 回复 引用 查看   
#2楼 2011-03-03 23:23 大马哈鱼1985      
如果一直不开放多任务,而是仅依赖于tombstone的话,对程序开发简直是悲剧性的打击。M$一方面要求开发者作出一致性的用户体验,即Activated的时候需要回复所有页面元素和状态,一方面却又要强杀程序,设想如果一个页面非常复杂,甚至是动态生成的UI元素,那状态保存和恢复,可不是件易事哦。开发人员的精力得在这方面浪费多少啊!
M$快开放多任务吧!

 回复 引用 查看   
#3楼 2011-03-09 12:02 木棉果      
有消息说微软的年底大更新会开放真正的多任务...其实tombstone机制微软是被苹果忽悠了...苹果当初也是采用类似这种机制。。但苹果后来已经意识到还是真正的多任务要好得多...真不知道微软的Windows Phone团队是怎么想的..那现在的应用采用tombstone机制的话,到时微软开放了真正的多任务,会出现怎样的结果呢?林老师?