2009-12-21 5 views
0

Я использую WinDbg (Native x64 - NOT Itanium) для отладки x64 (неуправляемого) приложения, которое загружает обе управляемые неуправляемые библиотеки DLL.WinDbg - отладка смешанного x64 управляемого/неуправляемого кода

Я пытаюсь установить точку останова в одной из неуправляемых библиотек DLL. Когда точка останова ударяется, и я перехожу, отображаемые инструкции полностью отличаются от того, что они должны быть. Я проверил с двумя разными дизассемблерами, что WinDbg не показывает правильную разборку при прохождении.

При подключении к приложению, я получаю строку, как это:

ModLoad: 00000000`XXXXXXXX 00000000`YYYYYYYY C:\MyDLL.DLL 

Я настроил адреса в двух дизассемблеров, чтобы отразить базовый адрес XXXXXXXX.

В чем может быть проблема?

+0

Я нашел это (который никогда не был полностью отвечал): http://stackoverflow.com/questions/1398826/vs2008-on-win7-64-bit-debugging-a-windows-service Может быть, это поможет? – devviedev

+0

действительно ли разбирательство имеет смысл? я бы дал общее предпочтение windbg, поскольку он декодирует, используя действительный ip в реальном процессе, который имеет преимущества, а не только на основе статического анализа (как бы ни был хорош дизассемблер). можете ли вы показать немного кода сборки для сравнения? – deemok

+0

Это «вызов someFunc» против «mov ebx, esp». Даже вступая в другие моменты, он не соответствует. Кажется непоследовательным, в котором ударяют точки останова; Я установил точки останова, которые должны быть удалены, но это не так. – devviedev

ответ

0

uf modname! FuncName возвращает правильные результаты? Иногда вы можете обмануть WinDbg, если вы собрали/перехватили в странных местах. Помните, что x86/x64 - это набор инструкций переменной ширины, поэтому, если вы начинаете читать наполовину через инструкцию, дизассемблер путается.

+0

Считаете ли вы, что интерпретатор .NET может меняться? – devviedev

+0

Нет, среда CLR не изменит неуправляемую DLL –

+0

Если я делаю «u

», это не соответствует. Я не отлаживаю символы. Я также попытался немного переместить адрес, не поможет правильно разобрать. – devviedev

0

Где-то я заметил, что это может быть связано с неправильной точкой входа в вашу DLL. Но я не знаю, что делать с этой информацией (я новичок).

 Смежные вопросы

  • Нет связанных вопросов^_^