我可以在整个表单上设置断点条件吗?

时间:2014-12-15 15:41:59

标签: vb.net debugging breakpoints

运行程序时,我需要在每次禁用某个按钮时查看,并在此时逐步执行代码。

如果我用条件设置断点 (例如:只有当button1.enabled = false时才会命中)它只会在特定的地方点击。

是否可以在整个程序中设置断点,以便我可以看到条件在多种形式和位置发生变化?

2 个答案:

答案 0 :(得分:4)

您不能设置一个断点并将其应用于文件的每一行,但您可以在已设置的Enabled上设置断点,然后将其过滤到特定的过滤条件。这会给你想要的结果。 (注意,您可能需要关闭"只需我的代码",请参阅this question for more info

使用" New Breakpoint At Function"设置断点。 as described here,但在Visual Studio 2013中,我似乎需要使用略有不同的表示法:

enter image description here

然后将断点设置为funtion:

 System.Windows.Forms.Control.Enabled

在C#或VB.NET中:

 System.Windows.Forms.Control.set_Enabled(bool)

(您似乎需要使用实际定义属性的类,在Button类' Enabled属性的情况下,Control类是{{ 1}}继承自。

忽略关于它无法找到该函数的警告(它以某种方式对属性执行此操作),或取消选中Intellisense查找。

现在在Breakpoints列表中查找断点并自定义条件,使其在右键上断开

enter image description here

使用Button属性(或使断点唯一的任何其他过滤器)在需要时触发:

enter image description here

当它中断时,它将在Control的源中中断(如果启用了Framework Source Stepping),这可能会令人困惑。使用“堆栈跟踪”窗口查找完全调用方法的位置。

enter image description here

设置断点的另一种方法是通过Stacktrace窗口。在任何具有您感兴趣的属性的行上设置断点。启动调试器并使其在该行上中断,现在使用" Step to Specific"进入你要打破的财产。

enter image description here

使用" Stack"窗口为您生成断点:

enter image description here

答案 1 :(得分:0)

因为在您的情况下,您希望打破Microsoft .NET框架中的函数,还有另一种方法。 Enabled Framework Source Stepping

打开Visual Studio Debugger选项并启用“Framework Source Stepping”并禁用“Just My Code”。 enter image description here

然后按照说明启用Microsoft Symbol Servers。现在在调试器下加载您的应用程序并等待下载符号文件。 enter image description here

在代码中的任何位置设置一个断点,它与System.Windows.Forms(例如MainForm的构造函数)有某种关联,并右键单击“System.Windows.Forms”程序集中的任何函数来加载符号。部件。这将允许您进入“已启用”属性并在那里设置断点。 enter image description here enter image description here

可在此处找到完整的教程: http://blogs.msdn.com/b/sburke/archive/2008/01/16/configuring-visual-studio-to-debug-net-framework-source-code.aspx