我如何:使用条件创建断点? [C#Express]

时间:2009-06-23 03:44:42

标签: c# visual-studio visual-studio-2008 visual-studio-2010 breakpoints

我现在一直在我的Visual C#2008 RSS Feed中看到这一点:

http://lincolnfair.net/oldLincolnFair/mad.jpg

我很确定这只是VS 2010的一项功能,但我想知道是否还有在VS 2008中复制这个功能?

3 个答案:

答案 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中不提供设置条件断点的功能。