我现在一直在我的Visual C#2008 RSS Feed中看到这一点:
http://lincolnfair.net/oldLincolnFair/mad.jpg
我很确定这只是VS 2010的一项功能,但我想知道是否还有在VS 2008中复制这个功能?
答案 0 :(得分:19)
与@Relster类似,我有一个包含以下内容的代码片段
#if DEBUG
if( node.Name == "Book" )
System.Diagnostics.Debugger.Break();
#endif
node.Name == "Book"
根据我想要测试的条件而变化。 #if DEBUG
包装器确保检查永远不会让它发布代码。
这比使用Visual Studio中的条件断点更快很多。当你使用内置条件bp时,visual studio必须打入应用程序,暂停所有线程,评估表达式并确定每次遇到断点时它是否为真。在紧密循环中,这可能是接近完全执行性能和爬行运行之间的差异。
答案 1 :(得分:4)
你也可以在VS 2008中完成。我确信有很多方法可以做到,但一种方法是右键点击现有断点边缘的红点。选择condition...
,然后只需给它一个评估为bool
的条件,只有当这是真的时才会中断。条件语句应该可以访问设置断点的行中的任何内容。
在该上下文菜单中还有其他选项允许您过滤导致中断的内容(例如仅某些线程),根据断点被击中的次数中断,在遇到断点时运行宏,等
答案 2 :(得分:1)
另一种方法是制定自己的条件并使用以下呼叫:
System.Diagnostics.Debugger.Break();
虽然它可能不像VS2010设置断点那样复杂,但您可以用最少的代码开销获得相同的效果。只需记住在构建发布代码时将其删除。
注意:在VS2008和VS2005中,您可以通过设置常规断点(F9或在装订线中双击)设置条件断点,然后右键单击该断点以设置“条件...”。 VS2008 Express Edition中不提供设置条件断点的功能。