虚假代码的微小存根纯粹是为了设置断点(不会创建编译器警告)

时间:2015-06-18 20:57:29

标签: c# visual-studio

这是一个微不足道的问题,但发现自己一直在思考它 - 通常在调试时,我想在执行某段代码之后立即中断,而不是将断点放在下一行代码上(可能是由于大的注释阻塞导致的方式下降,或者将它放在最后一行代码上,然后在F10中断之后点击F10来重复它,我有这样的冲动,要设置一个简短的存根线,我将设置断点。

在VBA中,我使用DoEvents,这是c#中最短的事情,我发现它没有创建恼人的编译器警告(变量' x'被声明但从未使用过)是:

int x = 1; x++;

这是否与你能得到的一样好,或者是否有其他明显的方法我不知道?

注意:我知道通过以下方式抑制警告:

#pragma warning disable 0168    // get rid of 'variable is never used warning'

...但发现它偶尔不起作用。

2 个答案:

答案 0 :(得分:2)

出于调试目的,我总是使用System.Diagnostics.Debugger.Break()。在实践中,它就像在语句上插入断点,但在事后更容易确定其功能,并通过用户和系统之间的源控制来维护。它不会使您的断点窗口混乱。它也足够有用,在发布模式下运行时不会触发,允许您将它们放置在至关重要的区域,并在不损害客户版本的情况下保留它们。

作为替代建议,请点击 InBetween 的评论:

相反,如果您正在寻找一个无害的"声明您可以根据需要设置断点,Thread.Sleep(0)应该与您的轶事VBA解决方案足够相似,以满足您的调试目的。

  

的Thread.Sleep(0)。这告诉系统你要放弃其余的   线程的时间片,让另一个,等待,线程运行。

- http://blogs.msmvps.com/peterritchie/2007/04/26/thread-sleep-is-a-sign-of-a-poorly-designed-program/

在我看来,这是一个不太理想的解决方案,而不是我的第一个建议,但它可能更符合您的需求。

答案 1 :(得分:2)

所以你需要

  • 编写什么都不做但可以接受断点的代码,
  • 告诉其他程序员它什么都不做(所以他们不会尝试和#34;修复"它)。

制作一个什么都不做的功能:

// Call it anywhere, so you can put a breakpoint on the code
public static void DoNothing()
{
    // Any code which does nothing here
}

然后叫它:

... some code ...
DoNothing();
... other code ...