考虑以下代码:

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结合使用。

10-04 22:57