нормально, этот запрос не относится к использованию WinDbg или не имеет ничего общего с _NT_SYMBOL_PATH
Dr.Memory
является memory diagnostic tool
сродни valgrind
и основан на Dynamorio instumentation framework
можно использовать на необработанных немодифицированных бинарных файлов
на окнах вы можете вызвать его как drmemory.exe calc.exe
из командной строки (cmd.exe)
как только бинарная завершает выполнение лог-файл с именем results.txt
записывается в расположение по умолчанию
если бы установка _NT_SYMBOL_PATH drmemory чтит его и разрешает символьной информации из prepulled файла символа (а именно * .pdb) не кажется для загрузки файлов с сервера символов мс это просто кажется игнорировать SRV * кэш и, кажется, использовать только вниз по течению FOLDER SYMBOL
так, если PDB файл отсутствует или этого не скачал еще
results.txt будет содержать трассировка стека, как
# 6 USER32.dll!gapfnScSendMessage +0x1ce (0x75fdc4e7 <USER32.dll+0x1c4e7>)
# 7 USER32.dll!gapfnScSendMessage +0x2ce (0x75fdc5e7 <USER32.dll+0x1c5e7>)
а если символьный файл был доступен он будет показывать
# 6 USER32.dll!InternalCallWinProc
# 7 USER32.dll!UserCallWinProcCheckWow
поэтому в основном Вам нужен файл символов для области применения в вопросе
так я комментировал вам нужно получить символы для еха в вопросе
вы также можете использовать symchk в запущенном процессе и создать файл манифеста , и вы можете использовать symchk на компьютере, подключенном к интернету , чтобы скачать символы и скопировать его в локальную папку на non_internet машине и точка _NT_SYMBOL_PATH в эту папку
>tlist | grep calc.exe
1772 calc.exe Calculator
>symchk /om calcsyms.txt /ip 1772
SYMCHK: GdiPlus.dll FAILED - MicrosoftWindowsGdiPlus-
1.1.7601.17514-gdiplus.pdb mismatched or not found
SYMCHK: FAILED files = 1
SYMCHK: PASSED + IGNORED files = 27
>head -n 4 calcsyms.txt
calc.pdb,971D2945E998438C847643A9DB39C88E2,1
calc.exe,4ce7979dc0000,1
ntdll.pdb,120028FA453F4CD5A6A404EC37396A582,1
ntdll.dll,4ce7b96e13c000,1
>tail -n 4 calcsyms.txt
CLBCatQ.pdb,00A720C79BAC402295B6EBDC147257182,1
clbcatq.dll,4a5bd9b183000,1
oleacc.pdb,67620D076A2E43C5A18ECD5AF77AADBE2,1
oleacc.dll,4a5bdac83c000,1
так предполагается, что вы принес символы легче было бы повторно запустить тесты с локально кэшированных копий файлов символов
Если вы выбрали символы, но вы не можете повторно запускать тесты и должны работать исключительно с выходом из results.txt, у вас есть обработка текста (sed. grep, awk.или пользовательский анализатор)
drmemory люкс с symbolquery.exe в папке бин, и он может быть использован для решения символов из results.txt
в приведенном выше примере вы можете заметить смещение относительно modulebase как 0x1c4e7 в строке # 6 USER32.dll! gapfnScSendMessage + 0x1ce (0x75fdc4e7 {USER32.dll + 0x1c4e7})
так для каждой строки в results.txt вы должны разобрать смещение и вызвать символьный код на модуле, как показано ниже
:\>symquery.exe -f -e c:\Windows\System32\user32.dll -a +0x1c4e7
InternalCallWinProc+0x23
??:0
:\>symquery.exe -f -e c:\Windows\System32\user32.dll -a +0x1c5e7
UserCallWinProcCheckWow+0xb3
простой пример обработки теста из Result.txt и подстриженной выход
:\>grep "^#" results.txt | sed s/".*<"//g
# 0 system call NtUserBuildPropList parameter #2
USER32.dll+0x649d9>)
snip
COMCTL32.dll+0x2f443>)
Обратите внимание на comctl32.dll (есть comctl.dll по умолчанию в system32.dll и несколько других в WinSxS вы должно проконсультироваться с другими файлами, как global.log, чтобы просмотреть путь длл нагрузки
symquery.exe -f -e c:\Windows\winsxs\x86_microsoft.windows.common-
controls_6595b64144ccf1df_6.0.7601.17514_none_41e6975e2bd6f2b2\comctl32.dll -a +0x2f443
CallOriginalWndProc+0x1a
??:0
symquery.exe -f -e c:\Windows\system32\comctl32.dll -a +0x2f443
DrawInsert+0x120 <----- wrong symbol due to wrong module (late binding
/forwarded xxx yyy reasons)
Не уверен, что я понимаю, вы имеете в виду вы хотите вывести все символы, которые необходимы до отладки дампа и использовать символы автономный режим, если да проверка symchk/om http s: //msdn.microsoft.com/en-us/library/windows/hardware/ff560061 (v = vs.85) .aspx – blabb
Нет. Процесс не сбой, все ошибки были нефатальными, так что у меня есть трассировки стека в журнале вывода. Я хочу перейти от ** libeay32.dll + 0x1234 ** к ** libeay32.dll! SSL_new_ctx [ssl/ssl3.cpp: 1234] **. – patraulea
Обычно символы попадают в локальный кеш, поэтому в первый раз они должны быть медленными, и обычно ситуация становится быстрее. –