C语言中 Debug中 step into 和 step over的不同
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言中 Debug中 step into 和 step over的不同相关的知识,希望对你有一定的参考价值。
参考技术A 【转引】step into就是单步执行,遇到子函数就进入并且继续单步执行;
step over是在单步执行时,在函数内遇到子函数时不会进入子函数内单步执行,而是将子函数整个执行完再停止,也就是把子函数整个作为一步。
step out就是但单步执行到子函数内时,用step out就可以执行完子函数余下部分,并返回到上一层函
数。
step into:进入子函数,一步一步执行
step over:越过子函数(将子函数视为一步),但子函数会执行
step out:跳出子函数
在 Visual Studio 2015 中,Step Into (F11) 无法输入某些功能
【中文标题】在 Visual Studio 2015 中,Step Into (F11) 无法输入某些功能【英文标题】:Step Into (F11) doesn’t enter some functions in Visual Studio 2015 【发布时间】:2017-10-09 15:52:06 【问题描述】:从Normal Estimation Using Integral Images下载的程序。我想加入computeFeature (output)
。
程序不会单步执行该函数。既不要按 F11 也不要在函数定义内的某行设置断点。但是程序会进入下一条语句deinitCompute()
。
Why Visual Studio's debug mode Step Into (F11) sometimes doesn't enter inside some functions? 中提到的方法无效。 我的 Visual Studio 2015 选项设置如下所示。
Step into not working, but can force stepping after some asm steps 中提到的方法也不起作用。我的 Visual Studio 2015 客户端属性页设置如下所示。
Visual Studio 2012 - how to step into (F11) source code 中提到的方法也不起作用。 我的 Visual Studio 2015 中的 F11 没问题。
此问题可能会在另一台计算机上重复出现。 如何让 Visual Studio 直接进入函数 computeFeature(输出)?
这里是源代码Normal Estimation Using Integral Images和关联测试数据文件table_scene_mug_stereo_textured.pcd。
我在 Windows 10 Enterprise 上使用 Microsoft Visual Studio Enterprise 2015,版本 14.0.23107.0 D 14REL。
【问题讨论】:
你的问题不太清楚,但如果你试图进入一个没有源代码或调试信息的预编译库的函数,很可能它根本不会除非您已经在装配视图中,否则无法工作。 【参考方案1】:VS不单步执行函数的一些原因: 1) 函数没有调试信息。 在这种情况下,您可能需要设置 VS 以进入汇编语言。
2) 包含该函数的文件的调试信息已损坏。 在调试模式下重新编译文件。
3) 函数在库中,没有调试信息。
4) 该函数是操作系统函数,没有调试信息。
5) 您正在以发布模式运行。
6) 函数无代码,已被淘汰。 这可能会发生,具体取决于您的优化设置。
7) 编译器将您的函数转换为“内联”代码(通过优化)。
【讨论】:
根据您的清单,我发现我的问题在于第三项。在我删除库并添加相应的源代码后,我终于可以单步执行该函数了。非常感谢。 如何指示它进入一个函数?我有图书馆的资源,但它不会像往常那样询问我的位置。 你按F11
进入一个函数。请参阅上面的原因来解释为什么 VS 调试器不会单步执行函数。
@TangoXiao 库应该与生成的调试信息一起编译,即 .pdb 文件和源代码可供 VS 实际查看其他代码。为此,MS 实际上甚至为自己的运行时提供了 .pdb 文件。以上是关于C语言中 Debug中 step into 和 step over的不同的主要内容,如果未能解决你的问题,请参考以下文章
调试,高级--step into my code ,只调试自己写的代码,shux,各种step操作debug
Intellij IDEA调试功能使用总结(step over / step into / force step into/step out等)
为啥在 Android 应用程序中击中断点后禁用“Step Into (F5)”和“Step Over (F6)”?