C # и библиотека DLL MASM как отлаживать?

Описание

При этом у меня есть небольшая проблема с моим проектом - я не могу отлаживать dll (написанную на MASM), загруженную в программу, написанную на C #. Я оставляю точки останова в разных местах процедуры в dll, но ничего не происходит. Выполнение программы просто проходит через всю процедуру без остановки.

Я использую Visual Studio 2010 и имею следующую структуру решения:

Solution
|
+--+ the masm dll project
|  |
|  +- *.asm 
|  |
|  +- *.def
|
+--+ C# dll library poject 
|  
+--+ my C# project

Поэтому у меня есть доступ к исходному коду библиотеки DLL, и ее проект находится в том же решении, что и вызов проекта.

Однако, когда я устанавливаю точку останова в проекте библиотеки C #, она работает.

И все же я не могу отладить этого педераста. Может ли кто-нибудь указать мне на решение проблемы?

Решение

Предоставлено Камфордом

Все, что вам нужно сделать, чтобы иметь возможность отлаживать неуправляемую dll (не только masm, nasm и т. Д.), - это включить отладку неискаженного кода, что выполняется (в VS2010) с помощью:

Включение отладки неуправляемого кода

  1. Выбрав проект в обозревателе решений, в меню Проект щелкните Свойства.
  2. Щелкните вкладку «Отладка».
  3. Установите флажок Включить отладку неуправляемого кода.

(из здесь)


person MatBos    schedule 27.01.2013    source источник
comment
Я не знаю, что Visual Studio может взломать исходный файл MASM напрямую. Когда он сломается, он сразу перейдет к разборке и будет чистым ASM, без причудливых макросов MASM.   -  person Simon Whitehead    schedule 27.01.2013
comment
Если честно, мне бы это действительно подошло, но и этого не происходит! Выполнение просто проваливается через точки останова, как будто они не были установлены.   -  person MatBos    schedule 27.01.2013


Ответы (1)


Вам необходимо включить отладку неуправляемого кода в настройках Debug вашего проекта C #. Если это по-прежнему не работает, поскольку у вас есть код asm, вы можете вставить int 3 в свой asm как жестко запрограммированную инструкцию разрыва и перестроить свою dll.

person Camford    schedule 27.01.2013