单步执行代码时重复上一行
Previous line repeat while stepping through code execution
在逐步执行代码时,我注意到当遇到实例化新类时,代码会后退一行,从而执行两次。 这是两行。
ST_GalacticObject GO = GalacticObjects->Item [FIndex];
delete F; F = new ST_Facility (GO);
注意: GalacticObjects和称为FacilityClasses的相关对象(同一文件(都被定义为extern。
在创建和销毁对象时,生成的代码有许多隐藏位。
编译器在创建此代码时为其分配了一些行号。执行代码时,调试器会突出显示该行。
一种常见情况是调试器返回到运行析构函数时声明对象的行。
对于优化的代码,情况会变得更糟,因为您的代码不一定按顺序执行,您甚至可能会看到在评估每行的不同部分时多次执行行。
您只需要相信编译器已经做了正确的事情并生成了正确的代码,而忽略调试器告诉您正在发生的事情。
这些类型在调试优化(零售(代码时很常见。
但是,为了使调试器不混淆,您可以做出的最明显的改进是不要将两个语句放在同一行上。 也就是说,取而代之的是:
delete F; F = new ST_Facility (GO);
这:
delete F;
F = new ST_Facility (GO);
较新的编译器引入了用于生成更好(和更大(调试符号的选项,这些符号试图使单步执行过程对于优化的代码更加理智。 如果您使用的是Visual Studio,则可以浏览/Zo
选项(以前称为/d2Zi+
选项(。 详细信息在这里和这里。
但是,如果所有这些都是您自己的代码,只需切换到"调试"和/或"非优化"构建即可。 让生活更轻松。
相关文章:
- 在执行其他功能的同时播放动画(LED矩阵和Arduino/ESP8266)
- C++,系统无法执行指定的程序
- 使用C++中的模板和运算符重载执行矩阵运算
- 用c++从输入文件中读取另一行
- 读取文件的最后一行并输入到链接列表时出错
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- 我正在使用嵌套的while循环来解析具有多行的文本文件,但由于某种原因,它只通过第一行,我不知道为什么
- 单步执行代码时重复上一行
- 在C++中执行方法的同一行中传递指针
- C++ 两个函数除了一行之外执行相同的操作
- 分析执行C++代码的每一行所花费的确切时间
- 最后一行执行后的堆栈错误
- 引用变量在下一行程序执行后显示未找到的行为
- 有没有办法让 GDB 打印一些东西来告诉我一行已经执行,而不会停止
- 如何使用getline执行最后一行
- 如何使我的函数在某一行停止执行
- 我正在尝试递归地实现一个程序。我只是不明白为什么我的最后一行被执行了两次
- 一行中函数调用的执行顺序-未定义
- 为什么代码在某一行停止执行
- 如何确保在编译时没有执行路径到达某一行