WinDbg - отладка смешанного x64 управляемого / неуправляемого кода
Я использую WinDbg (Native x64 - НЕ Itanium) для отладки x64 (неуправляемого) приложения, которое загружает обе управляемые неуправляемые библиотеки DLL.
Я пытаюсь установить точку останова в одной из неуправляемых библиотек DLL. Когда достигается точка останова, и я перехожу, отображаемые инструкции полностью отличаются от того, какими они должны быть. Я проверил с двумя различными дизассемблерами, что WinDbg не отображает правильную дизассемблирование, когда я перехожу.
При подключении к приложению я получаю следующую строку:
ModLoad: 00000000`XXXXXXXX 00000000`YYYYYYYY C:\MyDLL.DLL
Я настроил адреса в двух дизассемблерах так, чтобы они отражали базовый адрес XXXXXXXX.
В чем может быть проблема?
2 ответа
Uf modname!FuncName возвращает правильные результаты? Иногда вы можете обмануть WinDbg, если разберете / остановите в странных местах. Помните, что x86/x64 - это набор команд переменной ширины, поэтому, если вы начнете читать в середине инструкции, дизассемблер будет сбит с толку.
Где-то я заметил информацию, что это может быть связано с неправильной точкой входа в вашу DLL. Но я понятия не имею, что делать с этой информацией (я новичок).