Как поставить точку останова в конце функции в windbg, чтобы мне не нужно было ее редактировать, даже если некоторые строки были добавлены / удалены в исходном коде?

StackOverflow https://stackoverflow.com/questions/2566166

Вопрос

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

Это было полезно?

Решение

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

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

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

Другие советы

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

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

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

То же самое применимо и к машинному коду.

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top