场景是:有一个深度调用层次结构,每个调用都将返回HRESULT。如果发生错误,函数将返回S_FALSE或S_ERROR,如果调用返回错误,调用者将直接返回错误代码。通常所有函数都将返回S_OK。 因此,在调试问题时,我需要进行多次试验,看看哪个调用返回!S_OK,然后更深入,继续...直到找到导致错误的最终位置。
我想知道是否能够在返回值(eax?)上创建“数据断点”所以当返回值改变或返回值等于某个值时,程序可以停止...
答案 0 :(得分:0)
为什么不直接将返回值赋给变量,只要它等于某个值就设置一个中断(这称为条件断点),只返回变量而不是返回S_FALSE / S_ERROR / S_OK,等?
例如:
public long yourFunc() {
long ret = S_OK;
if (someCondition) {
ret = S_ERROR;
}
return ret; // set a conditional breakpoint here, and put in
// a condition where ret != S_OK
}
修改的
如果您不想/不能更改代码,您可能想要查看此主题:
Is it possible to set a conditional breakpoint at the end of a function based on what the function is about to return?