考虑以下代码:
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
并使其有机会在调试器中查看其值?我经常遇到这种情况,我的解决方案是通过在块的末尾放置一个虚拟变量来重新编译代码,然后在该块的末尾放置细分或遍历值数组,有时可能是很大,以便我可以看到存储了什么值,或者可能需要额外的工作才能将存储的
param_type
转换为正确的对象。两种解决方案都不理想,因为第一种引入了警告(被视为错误,在这种情况下我必须按文件规则设置)以及代码的重新编译,我都希望避免这两种方法,而第二种则浪费了时间。 最佳答案
您可以让tracepoint在整个循环中的每次迭代中输出phi
的值。您甚至应该可以将其与breakpoint conditions结合使用。