Как создать приложение, которое отображает больше информации о стеке в Process Monitor?
Я только что обнаружил Sysinternal Process Monitor и мне нравится, что он дает представление о том, что делает процесс. Однако, когда я пытаюсь увидеть детали программного вызова ядра, стек заполняется "неизвестными". Как мне построить приложение, чтобы имена функций появлялись на трассировке стека?
1 ответ
Часто достаточно скомпилировать его с /Zi и связать его с /debug. Вы должны получить файл PDB, который содержит всю отладочную информацию вашего приложения. Пока вы не перемещаете исполняемый файл или PDB, Process Monitor обычно должен его найти.
Если у вас несколько версий приложения или вы хотите исследовать стек вызовов на других компьютерах, возможно, лучше настроить Symbol Server. Затем вам нужно сохранить все ваши EXE-файлы и файлы PDB на Symbol Server (с помощью утилиты symstore) и настроить систему таким образом, чтобы Process Monitor использовал Symbol Server для поиска отладочной информации. Информация на http://support.microsoft.com/kb/311503 должна помочь вам начать.
Один из способов, который работает нормально, это установить переменную окружения _NT_SYMBOL_PATH
:
set _NT_SYMBOL_PATH=symsrv*symsrv.dll*\\yourserver\symbols*http://msdl.microsoft.com/download/symbols
... где \\yourserver\symbols
Это будет общий ресурс с возможностью записи и чтения, но также может быть локальным путем на вашем компьютере. Здесь символы кэшируются для повторного использования.