避免在Visual c++ 2008中跳出块
Avoid stepping out of block in Visual C++ 2008
考虑以下代码:
std::vector<myObject*> veryLargeArray;
for (int i = 0; i < veryLargeArray.size(); ++i)
{
param_type* currParams = veryLargeArray[i]->GetParams<param_type>();
currParams->phi = /* some complex formula */;
}
我该如何步进代码,这样我就知道在循环的另一个迭代开始之前,什么答案被存储在phi
中,这将有效地破坏currParams
,并与它在调试器中观察其值的机会?
我经常遇到这种情况,我的解决方案是通过在块结束之前放置一个虚拟变量来重新编译代码,然后我将break 或通过值数组,有时可能是巨大的,只是为了看到存储的值,或者可能需要额外的工作来将存储的param_type
转换为正确的对象。这两种解决方案都不理想,因为第一种解决方案引入了警告(它被视为错误,在这种情况下,我必须设置每个文件的规则)以及重新编译代码,这两种情况我都希望避免,而第二种解决方案浪费时间。
您可以在循环的每次迭代中使用跟踪点输出phi
的值。您甚至应该能够将此与断点条件结合使用。
设置右括号的断点。打开断点窗口(Ctrl+D, B),并在断点列表中选择您的断点。右击并选择"条件"。在条件对话框中输入"i==veryLargeArray.Size()-1"。Ok dialog and F5;-)
您可以在循环外声明一个变量,用于在迭代之间存储您的值,并在右括号上设置一个断点。
std::vector<myObject*> veryLargeArray;
int inspector; // assuming currParams->phi is int, change type accordingly
for (int i = 0; i < veryLargeArray.size(); ++i)
{
param_type* currParams = veryLargeArray[i]->GetParams<param_type>();
currParams->phi = /* some complex formula */;
inspector = currParams->phi;
}
相关文章:
- 枚举和二进制或运算符(MISRA C++ 2008,4-5-2)
- 如何使用Visual Studio 2008将字符串映射到函数?
- 使用 2x1 图块平铺 2xM 数组以最大化差异 - INOI 2008,P2
- MSVC 2008,调试过程,无法调试
- 生成可视C++ 2008 项目时出现链接器错误
- Visual Studio 2008 WriteFile
- VS 2008 和 VS 2017 中静态参数的不同行为
- Microsoft Visual Studio 2008,版本9.0.30739.1 SP,DLL构建错误
- 如何在何处获取 MSVS 2008(32 位)编译器工具链的编译器,而无需安装 MSVS2008
- 如何防止Visual Studio 2008 C编译器在发生某些错误时停止?
- VS 2008 和 VS 2017 之间的可视化C++内存管理更改
- upper_bound带有binary_function Visual Studio 2008错误
- 找不到 Visual Studio 2008 的生成工具(平台工具集 = 'v90')
- 相当于WindowsServer API for VS 2008编译器
- VS 2008:链接命令包括我没有要求且不存在的库
- 如何自动增加Visual C 2008中的构建数量
- 如何将RDRAND指令添加到与2008年汇编的64位代码中
- Windows Server 2008 R2上的蓝牙GetradioInfo的替代方案
- stdlib.h's random() on MS Visual Studio 2008
- 为什么Visual C++ 2008在我(不小心)使用布尔类型时没有抱怨