vc++ can't resolve symbols
От: jyuyjiyuijyu  
Дата: 25.01.12 04:15
Оценка:
Всем привет

вот у меня на XP symbol pack распаковался в c:\windows\symbols
переменная _NT_SYMBOL_PATH = c:\windows\symbols причем внутри
такая иерархия есть папки dll exe и так далее внутри все
*.pdb файлы все прекрасно работает но вот я скачал символы для семерки
распаковал в E:\Symbols там иерархия папок такая
E:\Symbols\ws2_32.pdb\18C960B958404C4F80F686EE978A33D42\ws2_32.pdb
и так для каждого *.pdb файла в итоге у меня ни студия ни таже IDA не видит
символы хотя если указать полный путь (тоесть жестко прописать
E:\Symbols\ws2_32.pdb\18C960B958404C4F80F686EE978A33D42
в _NT_SYMBOL_PATH) то все видит у меня же прописано
_NT_SYMBOL_PATH = e:\symbols и ничего не работает я конечно могу написать
скрипт чтобы он распаковал все *.pdb в одну папку и уже ее
прописать в _NT_SYMBOL_PATH но что то подсказывает мне что я чего то не знаю


также я под XP открываю файлы с семерки поэтому моя _NT_SYMBOL_PATH
выглядит так _NT_SYMBOL_PATH = c:\windows\symbols;e:\symbols
чтобы подгружал нужные символы в зависимости от версии OS
так вот так тоже не работает а если прописать так _NT_SYMBOL_PATH =
C:\WINDOWS\symbols;E:\Symbols\ws2_32.pdb\18C960B958404C4F80F686EE978A33D42
то символы для ws2_32 находятся если открываеш модуль с семерки
вообщем какой то странный инсталлятор символов в семерки символы верные
в принципе и подходят к файлам от семерки но вот их иерархия в папке
symbols непонятная если для XP я могу просто указать
_NT_SYMBOL_PATH = c:\windows\symbols все символы видны то для семерки
_NT_SYMBOL_PATH = E:\Symbols не работает а вот если вшить точный путь
_NT_SYMBOL_PATH = E:\Symbols\ws2_32.pdb\18C960B958404C4F80F686EE978A33D42
то послушно подгружает вообщем как с этим бороться ?

Всем спасибо

P.S если конечно ничего не придумаем то видимо надо будет распаковать все *.pdb в одну папку каким нить скриптом и ее уже прописать
Re: vc++ can't resolve symbols
От: jyuyjiyuijyu  
Дата: 25.01.12 09:45
Оценка:
навоял на пайтоне скрипт мержащий все пдбшки в одну папку
src = "E:\Symbols"
dest = "C:\MergeSymbols"

i = 1
for root, dir, files in os.walk(src):
    for name in files:
        print str(i) + " " + root + "\\" + name
        i += 1; # шлак такой шлак пайтон не умеет инкремент/декремент
        path = root + "\\" + name
        shutil.copy(path, dest)

так вот символы стали находиться все работает кроме того что некоторые
пдбшки не совпадают с модулями
hiuhuyhyu.exe    C:\Users\Anonymous\Documents\..    Symbols loaded. C:\Users\Anonymous\Documents\..    
ntdll.dll    C:\Windows\System32\ntdll.dll       Symbols loaded  (source information stripped).    
kernel32.dll    C:\Windows\System32\kernel32.dll   Symbols loaded  (source information stripped).    
KernelBase.dll    C:\Windows\System32\KernelBase.dll Symbols loaded  (source information stripped).        
ws2_32.dll    C:\Windows\System32\ws2_32.dll       Symbols loaded  (source information stripped).    
msvcrt.dll    C:\Windows\System32\msvcrt.dll       Exports loaded.    
rpcrt4.dll    C:\Windows\System32\rpcrt4.dll       Symbols loaded  (source information stripped).    
nsi.dll            C:\Windows\System32\nsi.dll       Exports loaded.        
user32.dll    C:\Windows\System32\user32.dll       Symbols loaded  (source information stripped).    
gdi32.dll    C:\Windows\System32\gdi32.dll       Symbols loaded  (source information stripped).    
lpk.dll            C:\Windows\System32\lpk.dll       Exports loaded.    
usp10.dll    C:\Windows\System32\usp10.dll       Symbols loaded  (source information stripped).    
msvcr90d.dll    C:\Windows\winsxs\..               Symbols loaded. C:\Windows\symbols\..    
imm32.dll    C:\Windows\System32\imm32.dll       Symbols loaded  (source information stripped).        
msctf.dll    C:\Windows\System32\msctf.dll       Exports loaded.

как видим тут msvcrt.dll nsi.dll lpk.dll msctf.dll не смогли подгрузить символы
хотя пдбшки для них есть при попытке вручную подгрузить VC++ ругается что
пдбшка не совпадает с модулем а для всех остальных модулей пдбшки совпадают

как это понимать ? семерка сервис пак 1 символы тоже для семерки севис пак 1
скачал но странно почему тогда некоторые пдбшки не совпадают
Re: vc++ can't resolve symbols
От: Peregrin  
Дата: 25.01.12 13:06
Оценка:
Здравствуйте, jyuyjiyuijyu, Вы писали:

J>_NT_SYMBOL_PATH = E:\Symbols не работает а вот если вшить точный путь

J>_NT_SYMBOL_PATH = E:\Symbols\ws2_32.pdb\18C960B958404C4F80F686EE978A33D42
J>то послушно подгружает вообщем как с этим бороться ?

_NT_SYMBOL_PATH = srv*E:\Symbols
А так работает?
Re[2]: vc++ can't resolve symbols
От: jyuyjiyuijyu  
Дата: 25.01.12 15:16
Оценка:
Здравствуйте, Peregrin, Вы писали:

P>Здравствуйте, jyuyjiyuijyu, Вы писали:


J>>_NT_SYMBOL_PATH = E:\Symbols не работает а вот если вшить точный путь

J>>_NT_SYMBOL_PATH = E:\Symbols\ws2_32.pdb\18C960B958404C4F80F686EE978A33D42
J>>то послушно подгружает вообщем как с этим бороться ?

P>_NT_SYMBOL_PATH = srv*E:\Symbols

P>А так работает?

да работает, волшебно !! премного благодарен

остался только маленький вопрос почему некоторые DLL не смогли подгрузить символы хотя пдбшки для них есть (наверное другой версии значит) но почему ведь сервис пак 1 и символы тоже для сервис пак 1
Re[3]: vc++ can't resolve symbols
От: Peregrin  
Дата: 25.01.12 15:28
Оценка:
Здравствуйте, jyuyjiyuijyu, Вы писали:

J>да работает, волшебно !! премного благодарен


J>остался только маленький вопрос почему некоторые DLL не смогли подгрузить символы хотя пдбшки для них есть (наверное другой версии значит) но почему ведь сервис пак 1 и символы тоже для сервис пак 1


Почему — сказать не могу, может апдейты какие-то поставились на эти дллки из винапдейта и пдбшки уже не совпадают. Но можно ж их скачать прямо с сервера символов Microsoft отладчиком. В студии правый клик на модуль и Load Symbols From->Microsoft Symbol Servers, а в WinDBG — .reload. Ну или добавить сервер в _NT_SYMBOL_PATH, типа так:
_NT_SYMBOL_PATH=SRV*E:\Symbols*http://msdl.microsoft.com/download/symbols
Re[4]: vc++ can't resolve symbols
От: jyuyjiyuijyu  
Дата: 27.01.12 12:17
Оценка:
P>Почему — сказать не могу, может апдейты какие-то поставились на эти дллки из винапдейта и пдбшки уже не совпадают. Но можно ж их скачать прямо с сервера символов Microsoft отладчиком. В студии правый клик на модуль и Load Symbols From->Microsoft Symbol Servers, а в WinDBG — .reload. Ну или добавить сервер в _NT_SYMBOL_PATH, типа так:
P>
_NT_SYMBOL_PATH=SRV*E:\Symbols*http://msdl.microsoft.com/download/symbols


ясно
у себя в XP прописал так теперь при открытии модулей
с семерки подгружаются семерочные символы а при открытии
модуей с XP подгружаются XP'шные символы
_NT_SYMBOL_PATH = C:\WINDOWS\symbols;SRV*E:\Symbols
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.