断点的工作方式与示例中的不同
Posted
技术标签:
【中文标题】断点的工作方式与示例中的不同【英文标题】:Breakpoints work differently than in examples 【发布时间】:2020-12-20 20:55:34 【问题描述】:我正在使用 Visual Studio 编写 C++ 代码。正如我在 The Cherno 的 YouTube 教程中所遵循的那样,他建议在某些地方放置断点。他把它们放在那里,它们就起作用了。当我将它们放在我的代码副本中的相同位置时,调试器不会运行它们(标记断点的红色圆圈在调试时变为黑色)。我试图打破的特定地方是将变量初始化为整数。
我注意到我尝试在 main() 的第一个括号之外放置断点的每个地方都变黑并且不运行。
这就是 The Cherno 的代码在一个工作断点的情况下的样子。
这就是我的代码的样子。如果我将第一个断点移到他的位置,它就不会运行。还要注意没有其他断点运行。
我已确定我在调试模式下运行。This is my screen before I press F5 to run, note "debug" selected in dropdown menu.
我还确保在我的项目属性菜单的 C++ 部分中禁用了优化。
【问题讨论】:
您是否在调试模式下构建?当您将鼠标光标放在其中一个黑色断点上时,工具提示中会显示什么消息(该消息应说明无法设置断点的原因)? 我正在调试模式下构建。当我在调试模式下运行后将鼠标悬停在已停用(黑色)的断点上时,横幅显示“断点当前不会被命中。调试器目标代码类型的可执行代码与此行无关。可能的原因包括:条件编译,编译器优化,或者当前调试器代码类型不支持此行的目标架构。” 您按 F10 单步执行代码对吧? (或 F11) 【参考方案1】:您正在发布模式下构建。将您的构建更改为调试模式。发布版本很难调试,因为许多代码行是一起编译的,因此不能单独破坏。如果您的断点没有正确设置或命中,那是因为您处于发布模式。
【讨论】:
我认为情况并非如此。我选择了调试模式,问题依旧出现(我相信我一直处于调试模式)。【参考方案2】:我建议你检查一下Solution Configuration
和Properties
的设置是否一致。
另外,不建议在if
的和
上设置断点,会导致条件编译。还有
compResult
就是false
,也就是说程序不能进入if (compResult)
。
此外,我建议您可以清理并重建程序。您可以尝试在Debug->Options->Debugging->General
中学习Require source files that exactly match the original version
选项。
【讨论】:
以上是关于断点的工作方式与示例中的不同的主要内容,如果未能解决你的问题,请参考以下文章
TOP 函数的工作方式与 mysql 中的 LIMIT 不同吗?