Сценарий: существует иерархия глубоких вызовов, и каждый вызов возвращает HRESULT. Если произойдет что-то плохое, функция вернет S_FALSE или S_ERROR, и если ошибка возврата вызова, вызывающий абонент будет напрямую возвращать код ошибки. обычно вся функция возвращает S_OK. Итак, при отладке проблемы мне нужно сделать много испытаний, посмотрите, какой вызов возвращается! S_OK, и углубитесь и продолжайте ... пока я не найду конечное место, которое вызовет ошибку.Могу ли он установить «точку останова данных» на возвращаемое значение
мне интересно, это может создать «контрольную точку данных» на возвращаемое значение (EAX?) Так, когда возвращаемое значение изменилось или возвращаемое значение равно некоторому значению, программа может остановить ...
Потому что есть иерархия глубоких вызовов, например, ret = some_other_function(); Если ошибка some_other_function возвращает ошибку, я должен повторить этот процесс еще раз. Если есть рекурсивная функция, связанная с древовидной структурой данных, я должен повторять много раз ... Поэтому я спрашиваю, есть ли что-то вроде точки останова данных при возврате значения :) – superb
Я не понимаю, почему вы должны были бы повторите процесс много раз, если используется рекурсия. Условная точка останова будет срабатывать, как только условие будет выполнено, независимо от того, насколько глубоко вы находились в рекурсивном спуске. В любом случае, если вы не хотите менять свой код, я разместил связанную ссылку в своем редактировании, которая может помочь. Удачи :). – dcp
проблема заключается в том, что в методе он не возвращается в одном месте, многие фрагменты кода выглядят так: hr = some_call (...); if (FAILED (hr)) return hr; Таким образом, условная точка останова не будет работать. Я проверю указанную вами ссылку. – superb