2015-05-05 7 views
0

Я совершенно новичок в этой области, поэтому, пожалуйста, со мной. Я запускаю Windows 7, на которой я хочу выполнить отладку ядра, и я не хочу связываться с загрузчиком. Поэтому я загрузил LiveKd, как и предлагалось here, и запустил его и, похоже, он работает. Если я правильно понимаю, это какая-то отладка только для чтения. Here упоминается, что он очень ограничен и даже точка останова не может быть использована. Я хотел бы спросить, возможно ли в этом режиме периодически сбрасывать все выполняемые команды или в основном все события, которые происходят в текущей ОС? Я хотел бы иметь систему с широким спектром (пользователи Linux знают) и сделать некоторый статистический анализ по этому вопросу. Я полагаю, это зависит от большего количества факторов, таких как установленные символы отладки, чтобы начать разрешать адреса адреса и т. Д.Сделайте windbg или kd прикрепленным к локальному ядру, ведущему себя как системный широкий strace

ответ

1

Я не уверен, что отладчик - лучший инструмент, который вы можете использовать для отслеживания живых системных вызовов. Как вы уже говорили, сеанс LiveKd довольно ограничен, и вам не разрешено размещать в нем точки останова (иначе вы бы повесили свою собственную систему). Тем не менее, вы все еще можете создавать дампы памяти, используя команду .dump (проверьте справку windbg: .hh .dump). Имейте в виду, что получение полной дампы (/f) работающей системы может занять много времени.

Возвращаясь к теме вашего вопроса, вы можете пропустить многие системные вызовы, поскольку у вас будут только моментальные снимки системы в заданные моменты времени. Так что если вы ищете что-то похожее на Linux strace я рекомендовал бы проверить эти инструменты:

  • Process Monitor (procmon) - это инструмент, который покажет вам все запросы ввода/вывода в системе, а также операции, выполняемые на реестре или событиями производственной деятельности
  • Windows Performance Toolkit - содержит инструменты для сбора (WPR) и анализа (WPA) систем и событий трассировки приложений. Это может быть много событий, и очень важно фильтровать их в соответствии с вашими потребностями. ETW (Трассировка событий для Windows) - это огромный вопрос, и вам, вероятно, потребуется прочитать некоторые учебники или книги, прежде чем вы сможете эффективно использовать его (но это действительно стоит!).
  • API Monitor - это один из многих (я считаю его одним из лучших) приложений трассировки - этот инструмент позволит вам отслеживать вызовы методов в любом из запущенных процессов. Он имеет приятный интерфейс и даже позволяет размещать точки останова на методах, которые вы хотели бы перехватить.

Есть много других инструментов, которые могут быть использованы для отслеживания в Windows, но я бы начал с тех, которые перечислены выше. Вы также можете проверить отличную книгу на эту тему: Inside Windows Debugging. Удачи! :)

+0

Hello lowleveldesign, спасибо за ответ и за упомянутые инструменты. О WPT, который я читал раньше, но никогда не пробовал, вероятно, потому что имя, которое похоже на это, решено для отслеживания производительности. Поддерживает ли эти утилиты какое-то использование партии? Цель состоит в том, чтобы получить данные текущей системы, чтобы не взаимодействовать с ней. Вы правы, дампы памяти - это не то, что я хочу по указанным причинам. Даже если windbg ограничен в сеансе LiveKd, AFAIK действует как наблюдатель. Я полагаю, что он должен знать о фактической инструкции. Теперь я говорю о инструкциях по сборке, а не о системных вызовах. THX –

+0

@WakanTanka вы можете вызвать wpr из командной строки, чтобы начать/остановить коллекцию трассировки. Существует еще один инструмент: xperf, который имеет еще лучший консольный консоль. И да, в то время как живая отладка, вы можете проверить трассировки стека работающих потоков. – lowleveldesign

+0

Здравствуйте, lowleveldesign: wpr не команда windbg или не так ли? Xperf кажется частью WPT? Мне интересно, нет ли у windbg такой команды только для любопытства. Я потратил много времени, чтобы запустить его (хотя это был удаленный отладчик ядра), поэтому я хотел бы попробовать в ближайшем будущем вместе с упомянутыми утилитами. –