如何在Visual Studio中调试没有断点的C#?

时间:2010-12-08 15:06:09

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

我很难找到导致给定副作用的陈述。我在每个班级成员中都设置了一个断点,但仍然无法在罪魁祸首线上暂停执行。

  • 是否存在调试器选项,无论断点如何,都会使执行在每一行暂停?

  • 如何在不费力地手动标记的情况下使每一行成为断点?

6 个答案:

答案 0 :(得分:5)

您可以暂停执行,然后逐行开始跟踪(例如按F10)。这会给你在每一行打破的完全相同的效果。

编辑:如果您使用“trace into”(在默认设置中按F11),则不必在每个方法中放置断点。然后调试器将停止在被调用方法的第一行。

如果您在调试时遇到问题,可能在进行断点之前需要进行更多的静态分析...您能描述一下您试图追捕的副作用吗?也许人们可以就如何找到它或至少缩小搜索范围提出建议。

编辑2 :我认为您不会发现通过断点描述的副作用。加载已签名的程序集时,CLR将对签名代码进行验证。它必须访问网络才能更新撤销列表。

要解决此问题,您可以禁用CRL检查。以下是有关如何操作的一些信息: http://technet.microsoft.com/en-us/library/cc738754(WS.10).aspx

当然,您应该了解安全隐患(如果您正在运行 的代码的证书被撤销,该怎么办?)

答案 1 :(得分:3)

在代码的第一行执行断点(例如,如果您是控制台应用程序,则为主函数的第一行)。然后只需使用单步命令(默认情况下为F10和F11)来完成执行。

答案 2 :(得分:1)

这个很容易,但前提是你知道发生了什么。这是做什么的。

  1. 在Visual Studio中打开项目,按住 ctrl-alt-E 以加载“例外”对话框。 这为您提供了何时休息的选项。您将选择“Common Language Runtime Exceptions”抛出列。
  2. 现在继续运行您的应用程序。现在,抛出的任何CLR异常都会将您带到破坏的代码行。
  3. 不要忘记ctrl-alt-E并在完成后取消选中!

    screenshot here!

答案 3 :(得分:1)

最简单的方法是使用调试器的内置Break All功能。它并不适用于所有情况,但如果适用于您的情况,则使用起来非常简单。调试>>全部中断(或 CTRL + ALT + 中断

有关详细信息,请参阅此页面上标题为“使用断点或全部中断进入代码”的部分:Start, Break, Step, Run through Code, and Stop Debugging in Visual Studio

答案 4 :(得分:0)

您可以尝试使用F10踩过代码直到遇到问题,它会产生相同的结果。

答案 5 :(得分:-1)

我不确定我是否理解你的问题。 您可以使用一个断点然后按F10(跳过)或F11(步入)来执行下一条指令。这与在每条线上都有断点并在每次休息后击中F5(继续)相同。 或者你可以在罪魁祸首线上设置一个断点并调查callstack窗口以查看到那时为止的控制流程。