Как установить точки останова в 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 команда, которая может печатать имя функции (или номер точки останова, если нет имя функции)?

1 ответов


разобрался. Благодаря Эдчему.

команды: bm *module_name!* ".frame;gc"