Debugging 它是否能够设置一个;“数据断点”;关于返回值

Debugging 它是否能够设置一个;“数据断点”;关于返回值,debugging,breakpoints,Debugging,Breakpoints,场景是:有一个深层调用层次结构,每个调用都将返回HRESULT。如果发生错误,函数将返回S_FALSE或S_ERROR,如果调用返回错误,调用方将直接返回错误代码。正常情况下,所有功能将返回S_OK。 所以,当调试一个问题时,我需要做很多试验,看看哪个调用返回!好的,再深入一点,继续。。。直到我找到了最终导致错误的地方 我想知道它是否能够在返回值(eax?)上创建一个“数据断点”,因此当返回值更改或返回值等于某个值时,程序可以停止…为什么不将返回值分配给变量,在变量等于某个值时设置一个断点(这称

场景是:有一个深层调用层次结构,每个调用都将返回HRESULT。如果发生错误,函数将返回S_FALSE或S_ERROR,如果调用返回错误,调用方将直接返回错误代码。正常情况下,所有功能将返回S_OK。 所以,当调试一个问题时,我需要做很多试验,看看哪个调用返回!好的,再深入一点,继续。。。直到我找到了最终导致错误的地方


我想知道它是否能够在返回值(eax?)上创建一个“数据断点”,因此当返回值更改或返回值等于某个值时,程序可以停止…

为什么不将返回值分配给变量,在变量等于某个值时设置一个断点(这称为条件断点),只返回变量,而不是返回S_FALSE/S_ERROR/S_OK,等等

例:

编辑
如果您不想/无法更改代码,您可能希望签出此线程:

因为存在深层调用层次结构,例如,ret=some_other_function();如果某个函数返回错误,我必须再次重复这个过程。如果有一个递归函数处理类似树的数据结构,我必须重复多次。。。所以我想问的是,返回值上是否有数据断点:)我不明白,如果使用递归,为什么必须多次重复这个过程。条件断点将在满足条件后立即触发,无论您在递归下降中的深度有多深。无论如何,如果你不想更改你的代码,我在编辑中发布了一个相关链接,这可能会有所帮助。祝你好运:)。问题是在方法中,它不会在一个地方返回,许多代码看起来像:hr=some_调用(…);如果(失败(hr))返回hr;所以条件断点不起作用。。。。我会检查你发布的链接。。
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
}