我如何:使用条件创建断点?

我一直在我的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。