6

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

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

我很确定这是 VS 2010 独有的功能,但我想知道是否有办法在 VS 2008 中复制它?

4

3 回答 3

19

与@Relster 类似,我有一个代码片段,其中包含以下内容

#if DEBUG
    if( node.Name == "Book" )
        System.Diagnostics.Debugger.Break();
#endif

根据node.Name == "Book"我要测试的条件进行更改。包装器确保#if DEBUG检查永远不会发布代码。

这也在 Visual Studio 中使用条件断点快得多。当您使用内置的条件 bp 时,Visual Studio 必须闯入应用程序,暂停所有线程,评估表达式并在每次遇到断点时确定它是否为真。在紧密循环中,这可能是接近完全执行性能和爬行运行之间的差异。

于 2009-06-23T05:02:53.790 回答
4

你也可以在 VS 2008 中做到这一点。我敢肯定有很多方法可以做到这一点,但一种方法是右键单击现有断点边缘的红点并选择condition...,然后给它一个评估为 a 的条件,bool只有当它是 true 时才会中断. 条件语句应该可以访问设置断点的行范围内的任何内容。

该上下文菜单中还有其他选项,可让您过滤导致中断的原因(例如仅某些线程),根据断点被击中的次数中断,在击中断点时运行宏等。

于 2009-06-23T03:47:43.690 回答
1

另一种方法是制定自己的条件并调用:

System.Diagnostics.Debugger.Break(); 

虽然它可能不像 VS2010 设置断点的方式那样复杂,但您可以用最少的代码开销获得相同的效果。请记住在构建发布代码时将这些东西取出。

注意:在 VS2008 和 VS2005 中,您可以通过设置常规断点(F9 或在 gutter 中双击)来设置条件断点,然后右键单击该断点以设置“条件...”。设置条件断点的功能在 VS2008 Express Edition 中不可用。

于 2009-06-23T03:51:29.943 回答