35

我正在尝试追踪当我单击 aspx 页面上的特定元素时发生的错误...

过去,我不得不追踪处理该特定事件的类,并在我认为应该命中的行上放置一个断点。在我最终找到正确的类之前,我通常需要多次尝试......特别是如果该类是隐藏在某处的用户控件......

因此,我想知道是否有任何方法可以让 Visual Studio 在我单击 aspx 页面上的元素(例如按钮)后执行的下一行代码中中断。我知道有一种方法可以打破抛出的任何异常,所以我想也许有类似的东西可以帮助我。

如果这种功能是不可能的,也许有人可以建议一种更好的方法让我快速找到我想要调试的类......

4

5 回答 5

31

您是否尝试过“调试”>“全部中断”(“暂停”)按钮?( Ctrl+ Break)

调试 > 全部中断

它通常会在堆栈中某个相当低的位置中断,例如在 WinForms 应用程序中的主窗体的 Show() 处,但如果您随后 Step Into 克服它,它通常会很好地处理这类事情。

于 2009-09-02T03:22:54.837 回答
4

您在寻找Step Into (F11)Step Over (F10)吗?

- 编辑

你也知道Call Stack窗户吗?它可以帮助您确定您的位置以及正在发生的事情。

于 2009-09-02T03:21:24.903 回答
2

条件断点可能是您的答案。如果您认为您的代码正在破坏,您可以设置它们,并且它们只会在满足条件时停止。

于 2009-09-02T03:24:06.177 回答
0

调试 -> 异常

检查抛出的 CLR 异常。

编辑

您很可能遇到 CLR 异常。使用此方法,调试器将始终在发生异常时中断。与读取堆栈跟踪相比,这非常方便。

于 2009-09-02T03:21:43.560 回答
0

一些想法:

  • 如果您为事件处理程序使用一致的命名约定,那么对它们进行全局搜索并添加断点应该是微不足道的。您可以在第一次点击时快速录制宏,然后回放宏,以消除多次重复操作的痛苦。通过一些练习,您将能够在几秒钟内对所有处理程序进行断点。

  • 为事件添加一个额外的事件处理程序(尽早创建它 - 例如在构造函数中 - 因此它在您的应用添加的所有其他事件处理程序之前添加,因此希望首先调用)并在其中插入断点。到达断点后,您可以单步执行该事件的其他事件处理程序。

  • 编写一个自定义事件处理程序来处理单击并简单地生成一个新事件。将所有其他事件处理程序附加到此次要事件。然后,您可以断点第一个处理程序并逐步执行它调用的辅助处理程序。

于 2009-09-02T05:16:39.007 回答