Я не могу показать исходный код в windbg, когда я нажимаю ntsd -d
на цель через windbg -k
, но он работает, когда я отлаживаю локально.
Я хочу отладить самое первое выполнение кода Winlogon.exe и LSASS.exe. Но чтобы облегчить воспроизведение проблемы, я составил эту настройку:
- Я использую приложение примера CrashMe с исходными и условными символами, скопированными в C:\CrashMe как на целевом, так и на хост-сервере
- Я использую средства отладки Windows для Windows (DTW) версии 6.12.0002.633 везде.
- Цель работает под управлением Windows XP SP3, конечной версии Windows 7.
- Каждый путь и настройки одинаковы на обоих машинах: путь к DTW и путь к crashme.
- Я всегда использую полный путь (например, c:\dtw\ntsd.exe).
- Я запускаю XP в виртуальной машине, загружаемой с помощью
/noexecute=optin /fastdetect /debug /debugport=com1 /baudrate=115200
Я могу отлаживать локально с помощью этой команды, запущенной из C:\CrashMe:
windbg -g -G -srcpath C:\CrashMe -y C:\CrashMe debug\CrashMe.exe
Я могу запустить виртуальную машину Windows XP и подключиться к ней с помощью этой команды:
windbg -n -k com:pipe,port=\\.\pipe\com_1,reconnect -srcpath SRV*;C:\CrashMe -y
c:\windows\system32;c:\windows\symbols;C:\CrashMe\debug
Но мне нужно отлаживать удаленный компьютер. На цель у меня есть следующие варианты:
- Отладка через
-server
и-remote
- Нарушение работы
- Используйте опции выполнения файла изображения (IFEO).
В каждой из этих опций я вижу символы (x crashme!*
работает).
Я не могу использовать # 1 (-server
) или # 2 (breakin.exe <pid>
), потому что я хочу отлаживать код запуска поставщика проверки подлинности, поэтому мне нужно LSASS.exe
начать с ntsd -d
. Я не могу позволить ему запускать и присоединяться позже.
Я понимаю, что мне нужно использовать IFEO. Используя gflags.exe вместо изменения реестра вручную, я устанавливаю исполняемые параметры
c:\dtw\ntsd -d -G -lines -x -y c:\symcache;c:\windows\system32 -n -srcpath C:\CrashMe\
- Я могу разбить приложение, но точки останова никогда не попадают.
- Я могу
.open
любой файл, но я не могу использовать файл для установки точки останова. - Я могу x (проверить) любой символ
- Я не вижу исходного кода.
Как я могу увидеть свой исходный код DLL для процесса, работающего под ntsd -d
через windbg -k
?