断点的工作方式与示例中的不同

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 ConfigurationProperties的设置是否一致。

另外,不建议在if上设置断点,会导致条件编译。还有compResult就是false,也就是说程序不能进入if (compResult)

此外,我建议您可以清理并重建程序。您可以尝试在Debug->Options->Debugging->General 中学习Require source files that exactly match the original version 选项。

【讨论】:

以上是关于断点的工作方式与示例中的不同的主要内容,如果未能解决你的问题,请参考以下文章

TOP 函数的工作方式与 mysql 中的 LIMIT 不同吗?

“添加断点”快捷方式在 xcode 4.3 中不起作用

嵌套的弹性盒在浏览器中的工作方式不同

Windows 中的 python 2 和 python 3 之间的命名管道的工作方式有啥不同吗?

Chrome 控制台 - 整个文件的断点

原子操作在进程间的工作方式是不是与它们在线程间的工作方式相同?