четверг, 30 октября 2008 г.

Symchk

Эта замечательная утилита входит в состав Debugging Tools for Windows.
Когда мы ставим символы от операционной системы (возможно даже и символы от SP), мы все равно не гарантированы от проблем - служба Windows Update работает 24/7, и если компьютер имеет выход в Internet, шанс на то, что ваши символы устарели, имеется.

Потом очень забавно с таким компьютером перемещаться туда, где Internet отсутствует (например, во время мор. испытаний) - если что-то произошло в одной из системных DLL, которые успели обновиться, отладка превращается в увлекательное занятие.
Symchk.exe как раз и позволяет решить эту проблему, загрузив заранее к себе на машину актуальные символы.
"Брутальное" использование выглядит примитивно:
symchk /r C:\Windows\System32\*.dll /s srv*C:\windows\symbols\dll*http:\\msdl.microsoft.com/download/symbolssymchk /r "C:\Program Files\Common Files\Microsoft Shared\*.dll" /s srv*C:\windows\symbols\dll*http:\\msdl.microsoft.com/download/symbolssymchk /r "C:\Program Files\Common Files\System\*.dll" /s srv*C:\windows\symbols\dll*http:\\msdl.microsoft.com/download/symbolssymchk /r "C:\WINDOWS\Microsoft.NET\Framework\*.dll" /s srv*C:\windows\symbols\dll*http:\\msdl.microsoft.com/download/symbols

Если хочется действовать менее грубо (либо меньше качать), то можно использовать заранее составленный список модулей (например, полученный с помощью команды lm в момент отладки) вот таким образом:
symchk.exe /it C:\Symbols\SysDLLs.txt /s SRV*C:\Symbols\*http://msdl.microsoft.com/download/symbols /oi /op /ov

SysDLLs.txt содержит список файлов в следующем виде:
C:\Windows\system32\MFC71ENU.DLL
C:\Windows\system32\MSCTF.dll
C:\Windows\system32\MSCTFIME.IME
C:\Windows\system32\advapi32.dll
C:\Windows\system32\apphelp.dll
C:\Windows\system32\atl71.dll
C:\Windows\system32\clbcatq.dll
C:\Windows\system32\comctl32.dll
C:\Windows\system32\comdlg32.dll
C:\Windows\system32\comres.dll
C:\Windows\system32\crypt32.dll
C:\Windows\system32\cscdll.dll


........

Комментариев нет: