Как установить точки останова в windbg, которые не останавливают выполнение программы, просто регистрирует функцию, называемую
Я отлаживаю компонент windows и хочу просмотреть все функции конкретного dll которые называются (также в точном порядке, в котором они называются). Я могу сделать это, прикрепив компонент к программы WinDbg и установка точек останова для всех экспортируемых функций (bm *module_name!*
) из dll в вопрос.
это работает, как ожидалось. Всякий раз, когда экспортируется функция that dll называется windbg ломает выполнение и печать на экране информации о точке останова, которая попадает. После этого я могу вручную возобновить выполнение, нажав Ф5 или предоставление команды go.
проблема: Некоторые функции dll должны возвращаться очень быстро (немедленно), иначе компонент аварийно завершает работу. В этом случае точка останова приводит к сбою компонента. Я могу удалить точку останова, о которой идет речь, но тогда не будет журнала ее попадания.
Я посмотрел вокруг и обнаружил, что я могу выполнить команду всякий раз, когда достигается точка останова. bm module_name!func_name ".printf "func_namen";gc"
но это невозможно для каждой экспортируемой функции. The dll имеет около 100 экспортируемых функций.
что я могу сделать, чтобы войти (на самом экране) каждая экспортированная функция, которая попадает (даже номер точки останова будет делать, если ничего другого не может быть сделано). Есть ли имя переменной, которое я могу использовать в printf
команда, которая может печатать имя функции (или номер точки останова, если нет имя функции)?