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