windbg қайсысы OS символдарының қоқыс файлына жүктелетінін анықтайды

Қоқыс файлының талдауы жасалғанда, Microsoft таңбалау серверіне нұсқаудың символдық жолын орнатамын. Windbg қоқыс файлының қандай OS-мен жұмыс жасайтынын біледі және бұл ОЖ үшін дұрыс таңбаларды қалай жүктейді?

0

1 жауаптар

To match symbols to binary, WinDbg looks at the thing called Debug Directories. Debug Directories are sections in PE modules (which is a file format used by Windows for all types of executables). Debug Directories simply contain links to types of debug information. If you type command in cmd window link /dump /headers , it will print out something like this:

...
Debug Directories

    Time Type       Size      RVA  Pointer
-------- ------ -------- -------- --------
4CC78FB1 cv           22 00102588   101988    Format: RSDS, {30976E0B-FBF7-45EF-8608-99932F2B791F}, 2, ntdll.pdb
4CC78FB1 (   A)        4 00102584   101984    BB03197E

...

Бұл ntdll.dll үшін шығарылады. Түйіндеме (CodeView үшін) Debug ақпараты ntdll.pdb ішіне кіргенін және осы PDB GUID сілтемедегіге сәйкес келуі керектігін көре аласыз. Бұл GUID әр уақытта модульде кездейсоқ түрде қалыптастырылады.

WinDbg ішіндегі ! Lmi пәрмені де осы ақпаратты түрлі форматта тастайды.

Таңба таңбаларынан символдарды жүктеу кезінде қандай WinDbg істейді, ол сәйкестік GUID-ге сәйкес келетін 'ntdll.pdb' деп аталатын файлды алу үшін таңбалық серверге сұрау жібереді.

2
қосылды
Әрбір PE модулінде өз таңбалық файлы бар. ОС үшін «рәміздер» деген сияқты ештеңе жоқ, себебі OS әр түрлі қызметтік бумалардан, патчтерден, ыстық түзетулерден, жеке қосарланған файлдардан және т.б. нұсқалардан тұрады.
қосылды автор seva titov, көзі
Тағы да, «OS таңбалары» жоқ, нақты PE модулінің таңбалары бар. Қоқыс жәшігі қазіргі уақытта процестің мекенжай кеңістігіне салыстырылатын модульдер тізімін қамтиды. Kernel32.dll түрлі нұсқалары бар - әр түрлі OS процессорларының архитектуралары үшін, әртүрлі нұсқалар OS түрлі патчтары бар. Отладчика kernel32.dll үшін регистрлерді шешуі қажет болғанда, модульдің ақпараттық құрылымына қарап, оны жүктеуші бастапқы модульде бастапқыда жүктелген. Бұл ақпарат PE кескінінің кейбір бөлімдерін, соның ішінде Debug Directory қызметін қамтиды.
қосылды автор seva titov, көзі
Сіз бұл ақпарат жиналыстарға енген PE модульдерінің бір бөлігі ме? Бағдарламаны жасаған кезде, әртүрлі қызметтік бумалармен әртүрлі ОЖ-мен іске қосуға болады. PE модулінде сақталған бұл ақпарат әр түрлі ОЖ-дегі бағдарламаның өзі жұмыс істеген кезде қолданыла алады деп шатастырамын.
қосылды автор Silverlight Student, көзі
Айтыңызшы, бағдарламаны жинау Vista-де жасалған. Мен Windows 7 және Windows Server 2008 үшін тағы біреуіне арналған қоқыс шығарамын. Бұл жағдайда PE модулінде Id үшін Vista бар ма? Бұл жағдайда Windows 7 және 2008 үшін екі қоқыс белгісі қалай пайда болады?
қосылды автор Silverlight Student, көзі