Как увидеть код с определенным смещением, используя WinDbg, без дампа? - PullRequest
0 голосов
/ 03 декабря 2018

У меня работает исполняемый файл на каком-то клиенте.Он сообщает о катастрофе в mymodule.dll!0xaddr.Учитывая, что у меня есть исполняемый файл, сервер символов, правильно настроенный WinDbg, есть ли способ увидеть код в местоположении 0xaddr без загрузки дампа или присоединения к запущенному процессу?

Ответы [ 2 ]

0 голосов
/ 04 декабря 2018

Это немного зависит от того, какой «код» для вас ...

  1. Запустите WinDbg
  2. Выберите «Открыть аварийный дамп ...», а не «Открыть исполняемый файл»... "
  3. Выберите файл EXE или DLL по вашему выбору, а не файл DMP
  4. Настройте символы
  5. Введите ln mymodule.dll!0xaddr дляпосмотрите, какой символ находится рядом с этим адресом
  6. Введите u mymodule.dll!0xaddr, чтобы увидеть код ассемблера

Если EXE или DLL имеют информацию о PDB, и WinDbg смог найти PDB, и еслиPDB ссылается на источник (например, закрытые символы), вы получите что-то полезное:

0:000> ln 00412510
[...\addressdemo\addressdemo.cpp @ 8] (00412510)   AddressDemo!main   |  (00412575)   AddressDemo!std::uncaught_exception
Exact matches:

0:000> u 00412510
AddressDemo!main [...\projects\addressdemo\addressdemo.cpp @ 8]:
00412510 55              push    ebp
00412511 8bec            mov     ebp,esp
00412513 81ecc0000000    sub     esp,0C0h
00412519 53              push    ebx
0041251a 56              push    esi
0041251b 57              push    edi
0 голосов
/ 03 декабря 2018

Такой адрес, скорее всего, ничего не говорит, так как Windows использует рандомизацию размещения адресного пространства.Вам нужен аварийный дамп для отладки после смерти.

...