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