考虑此代码:
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
并且有机会在其中查看其值调试器?
我经常遇到这种情况,我的解决方案是通过在块结束之前放置一个虚拟变量来重新编译代码,然后我将中断 OR 通过值数组,有时可能很大,只是为了让我可以看到存储了什么值,或者可能需要额外的工作才能将存储的param_type
转换为正确的对象。这两个解决方案都不理想,因为第一个引入警告(被视为错误,在这种情况下我必须设置每个文件规则)以及重新编译代码,我想避免这两个,而第二个浪费时间。
答案 0 :(得分:1)
在右括号上设置断点。打开断点窗口(Ctrl + D,B)并在断点列表中选择断点。右键单击并选择“条件”。在条件对话框中输入“i == veryLargeArray.Size() - 1”。确定对话框和F5; - )
答案 1 :(得分:1)
在循环的每次迭代中,您可以tracepoint输出值phi
。您甚至可以将其与breakpoint conditions结合使用。
答案 2 :(得分:0)
您可以声明在循环外声明的变量,以在迭代之间存储您的值,并在结束括号上设置断点。
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;
}