Как поставить точку останова в конце функции в windbg, чтобы мне не нужно было ее редактировать, даже если некоторые строки были добавлены / удалены в источнике? - PullRequest
6 голосов
/ 02 апреля 2010

Мне нужно регистрировать некоторые данные при попадании в некоторые функции, как в начале выполнения, так и в конце. Хотя у меня нет проблем с установкой точек останова в начале функций (используя bu [module]!functionname, я не знаю, как поставить точку останова в конце функции, ТАК, ЧТО мне не нужно редактировать точку останова каждый раз, когда я добавляю / удаляю строки из файла / функции. Я уверен, что это очень распространенный сценарий, просто я не знаю, как это делается !! Может кто-нибудь объяснить?

Ответы [ 3 ]

7 голосов
/ 18 апреля 2010

Вы можете использовать точку останова в начале функции для установки точки останова по адресу возврата. Как это:

bu [module]!functionname "bp /1 @$ra \".echo Exit functionname ; g\"; .echo Enter functionname; g"

Предупреждение: это может не сработать, если в функцию выдается исключение.

2 голосов
/ 02 апреля 2010

Вот то, что вы точно ищете

Получить возвращаемые значения функции и информацию о профилировании в .NET с помощью Windbg

Объясняется, как установить точку останова при возврате функции

То же самое относится и к нативному коду.

Надеюсь, это поможет.

0 голосов
/ 25 мая 2016

вы можете использовать команду pt, что означает переход к следующему Return. например, когда вы нажимаете на свою функцию в начале, команда enter only pt попадет в код при каждом вызове возврата.

...