Visual Studio 2015:调试器不会跳过

Posted

技术标签:

【中文标题】Visual Studio 2015:调试器不会跳过【英文标题】:Visual Studio 2015: Debugger won't step over 【发布时间】:2017-02-08 13:11:39 【问题描述】:

我是编码新手,这是我第一次调试(尝试学习)。当我运行我的项目时,它会在我的第一个断点第 14 行停止。我点击 Step Over,它将转到第 15 行(见屏幕截图)。

当我再次点击 Step Over 时,它会构建项目并在我的浏览器中打开,我没有机会进入第 21 行,Step Over 按钮显示为灰色。

我的期望是当我点击 Step Over 时,它将转到代码中的下一行。我是否误解了跨步和断点的工作原理?

谢谢。

在研究给出的答案后,以下链接将为有兴趣了解更多有关调试的人提供更多信息。

Getting Started with the Debugger

【问题讨论】:

你在Page_Load的末尾。单击okButton 以查看进入第21 行,尽管必须满足if 的条件。 【参考方案1】:

您遇到的行为既正常又正确。

您在第 14 行设置了一个断点,这是Page_Load 事件的一部分。如果我没记错的话,这几乎会立即触发——在您看到浏览器窗口出现之前。也许它会在窗口打开后立即触发,我完全忘记了。无论哪种方式,如果您单击 Step Over,它应该转到第 15 行。即使大括号没有任何操作,它们确实会被“执行”。通过第二次单击 Step Over —— 在执行大括号之后,你实际上是在告诉调试器“好的,我们已经完成了对 Page_Load 的查看,去做你接下来应该做的任何事情”——在这种情况下,这实际上是在浏览器中运行您的应用程序。

您的第二个断点位于名为okButton_Click 的完全独立的方法(事件)中。这会在您点击页面上的okButton 时触发。如果您的Page_Load 包含对okButton_Click 的调用,那么您可以使用Step Over,它最终会触发第21 行的断点。

有关调试器按钮的确切作用的更多信息可以在here 找到(请参阅下面的我的编辑以获得更好的链接)。

感谢您学习/发布有关调试器的问题。它是开发者拥有的最强大的工具,如果你知道如何使用它,很多问题都可以轻松解决。

编辑这是一个比上述链接更好的链接:https://msdn.microsoft.com/en-us/library/y740d9d3.aspx

我没有意识到我的第一个链接是针对 Office 产品中的 VB 脚本的;但它的行为本质上是相同的。

【讨论】:

感谢@sab669 的详细描述和鼓励。我感谢所有帮助新手的专业人士,这是一个多么棒的社区。​​span> @JM1 只要您表明有人尝试过,这个网站就会非常有帮助,是的。有很多问题一直在这里发布,带有非常简单的逻辑错误,在设置断点和使用Watch 窗口和Immediate 窗口时很容易发现这些问题。前者只是让您更轻松地随时跟踪特定变量,以便您可以准确了解它的值,而立即让您执行几乎任何语句。 在考虑您在两个 cmets 中所说的内容时,使用调试器、Watch 和即时窗口将引导我完成执行的每一步,并向我显示值是什么,这将让我知道它是否按预期执行。我现在明白你为什么说它是最强大的工具了。我可以使用这些工具自己诊断大多数事情,所以看起来我需要花时间深入学习调试,这样可以在未来几年为我节省大量时间。【参考方案2】:

您似乎正在“发布”模式下进行调试。尝试将模式更改为“调试”并重新运行应用程序。

编辑:第 21 行是确定按钮单击事件处理程序。一旦您在您的网页/用户界面上单击“确定”,它将被点击

【讨论】:

是的,我错过了。当我第一次阅读它时,我感到很困惑。但没有删除它,因为它可能有助于了解新手的配置。 谢谢@Mit,它确实让我仔细检查,它处于调试模式,但我没有注意到有这样的配置,所以谢谢你的评论。 愚蠢的问题,但为什么“发布模式”甚至重要?我刚刚加载了一个控制台应用程序,设置了一个断点,并内置了发布模式,它仍然触发并正常运行。我以为发布模式只包含一些优化之类的东西? 有很多配置会影响发布和调试行为。例如项目属性中的高级构建设置(调试信息)、定义调试常量、优化代码复选框等。设置这些属性的值将定义您的断点是否会被命中

以上是关于Visual Studio 2015:调试器不会跳过的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio 2015 RTM Cordova 项目不会调试/部署到 Android、Windows、Windows Phone

Visual Studio 2015不会禁止错误C4996

Visual Studio 2015 远程调试(联调)

Visual Studio 2015 调试器崩溃 [重复]

Visual Studio 2015 远程调试不兼容平台错误

Visual Studio 调试器不会自动附加到本地 Service Fabric 服务