Можно ли установить «точку останова данных» на возвращаемое значение - PullRequest
0 голосов
/ 21 июля 2010

Сценарий таков: существует глубокая иерархия вызовов, и каждый вызов возвращает HRESULT.Если что-то плохое случится, функция вернет S_FALSE или S_ERROR, а если ошибка возврата вызова, вызывающая сторона непосредственно вернет код ошибки.обычно вся функция возвращает S_OK.Поэтому при отладке проблемы мне нужно выполнить много испытаний, посмотреть, какой вызов возвращается! S_OK, и идти глубже, и идти дальше ... пока я не найду окончательное место, вызывающее ошибку.может ли она создать «точку останова данных» для возвращаемого значения (eax?). Поэтому, когда возвращаемое значение изменилось или возвращенное значение равно некоторому значению, программа может остановиться ...

1 Ответ

0 голосов
/ 21 июля 2010

Почему бы просто не присвоить возвращаемое значение переменной, установить разрыв для переменной, когда она равна определенному значению (это называется условной точкой останова), и просто вернуть переменную вместо возврата S_FALSE / S_ERROR / S_OK etc.?

например:

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
}

EDIT
Если вы не хотите / не можете изменить код, вы можете проверить эту тему: Можно ли установить условную точку останова в конце функции на основе того, что функция собирается вернуть?

...