Я совершенно новичок в этой области, поэтому, пожалуйста, со мной. Я запускаю Windows 7, на которой я хочу выполнить отладку ядра, и я не хочу связываться с загрузчиком. Поэтому я загрузил LiveKd, как и предлагалось here, и запустил его и, похоже, он работает. Если я правильно понимаю, это какая-то отладка только для чтения. Here упоминается, что он очень ограничен и даже точка останова не может быть использована. Я хотел бы спросить, возможно ли в этом режиме периодически сбрасывать все выполняемые команды или в основном все события, которые происходят в текущей ОС? Я хотел бы иметь систему с широким спектром (пользователи Linux знают) и сделать некоторый статистический анализ по этому вопросу. Я полагаю, это зависит от большего количества факторов, таких как установленные символы отладки, чтобы начать разрешать адреса адреса и т. Д.Сделайте windbg или kd прикрепленным к локальному ядру, ведущему себя как системный широкий strace
Сделайте windbg или kd прикрепленным к локальному ядру, ведущему себя как системный широкий strace
ответ
Я не уверен, что отладчик - лучший инструмент, который вы можете использовать для отслеживания живых системных вызовов. Как вы уже говорили, сеанс LiveKd довольно ограничен, и вам не разрешено размещать в нем точки останова (иначе вы бы повесили свою собственную систему). Тем не менее, вы все еще можете создавать дампы памяти, используя команду .dump
(проверьте справку windbg: .hh .dump
). Имейте в виду, что получение полной дампы (/f
) работающей системы может занять много времени.
Возвращаясь к теме вашего вопроса, вы можете пропустить многие системные вызовы, поскольку у вас будут только моментальные снимки системы в заданные моменты времени. Так что если вы ищете что-то похожее на Linux strace
я рекомендовал бы проверить эти инструменты:
- Process Monitor (procmon) - это инструмент, который покажет вам все запросы ввода/вывода в системе, а также операции, выполняемые на реестре или событиями производственной деятельности
- Windows Performance Toolkit - содержит инструменты для сбора (WPR) и анализа (WPA) систем и событий трассировки приложений. Это может быть много событий, и очень важно фильтровать их в соответствии с вашими потребностями. ETW (Трассировка событий для Windows) - это огромный вопрос, и вам, вероятно, потребуется прочитать некоторые учебники или книги, прежде чем вы сможете эффективно использовать его (но это действительно стоит!).
- API Monitor - это один из многих (я считаю его одним из лучших) приложений трассировки - этот инструмент позволит вам отслеживать вызовы методов в любом из запущенных процессов. Он имеет приятный интерфейс и даже позволяет размещать точки останова на методах, которые вы хотели бы перехватить.
Есть много других инструментов, которые могут быть использованы для отслеживания в Windows, но я бы начал с тех, которые перечислены выше. Вы также можете проверить отличную книгу на эту тему: Inside Windows Debugging. Удачи! :)
Hello lowleveldesign, спасибо за ответ и за упомянутые инструменты. О WPT, который я читал раньше, но никогда не пробовал, вероятно, потому что имя, которое похоже на это, решено для отслеживания производительности. Поддерживает ли эти утилиты какое-то использование партии? Цель состоит в том, чтобы получить данные текущей системы, чтобы не взаимодействовать с ней. Вы правы, дампы памяти - это не то, что я хочу по указанным причинам. Даже если windbg ограничен в сеансе LiveKd, AFAIK действует как наблюдатель. Я полагаю, что он должен знать о фактической инструкции. Теперь я говорю о инструкциях по сборке, а не о системных вызовах. THX –
@WakanTanka вы можете вызвать wpr из командной строки, чтобы начать/остановить коллекцию трассировки. Существует еще один инструмент: xperf, который имеет еще лучший консольный консоль. И да, в то время как живая отладка, вы можете проверить трассировки стека работающих потоков. – lowleveldesign
Здравствуйте, lowleveldesign: wpr не команда windbg или не так ли? Xperf кажется частью WPT? Мне интересно, нет ли у windbg такой команды только для любопытства. Я потратил много времени, чтобы запустить его (хотя это был удаленный отладчик ядра), поэтому я хотел бы попробовать в ближайшем будущем вместе с упомянутыми утилитами. –