Как поставить точку останова в конце функции в windbg, чтобы мне не нужно было ее редактировать, даже если некоторые строки были добавлены / удалены в исходном коде?
-
23-09-2019 - |
Вопрос
Мне нужно регистрировать некоторые данные при запуске некоторых функций, как в начале выполнения, так и в конце его.Хотя у меня нет проблем с установкой точек останова в начале функций (используя bu [module]!functionname
, Я не знаю, как поставить точку останова в конце функции, чтобы мне не нужно было редактировать точку останова каждый раз, когда я добавляю / удаляю некоторые строки из файла / функции.Я уверен, что это очень распространенный сценарий, просто я не знаю, как это делается !!Кто - нибудь может пояснить ?
Решение
Вы можете использовать точку останова в начале функции, чтобы настроить точку останова по адресу возврата.Вот так:
bu [module]!functionname "bp /1 @$ra \".echo Exit functionname ; g\"; .echo Enter functionname; g"
Предостережение:это может не сработать, если в функции генерируется исключение.
Другие советы
Вот то, что вы именно ищете
Получить возвращаемые функцией значения и информацию о профилировании в .NET с помощью Windbg
Объясняется, как установить точку останова при возврате функции
То же самое применимо и к машинному коду.
Надеюсь, это поможет.
вы можете использовать команду pt , что означает переход к следующему возврату.например, когда вы нажимаете на свою функцию при запросе, команда enter only pt приведет к попаданию кода при любом вызове return.