Как отладить код внутри DLL - PullRequest
1 голос
/ 27 февраля 2012

У меня есть программа на C #, из которой я вызываю некоторые функции / переменные из C ++.Сама программа на C ++ работает нормально и проверена.Но когда я собираю эту DLL и использую ее для C #, в коде сопряжения возникает какая-то ошибка, которая мешает мне получить правильный результат в C #.

Скорее всего, есть ошибка в переменных экспорта /экспортированные функции, выдающие результаты, которые я хочу проверить.

Мой основной вопрос: как мне отладить эту DLL, например, путем установки точек останова и т. д. и последующего просмотра результатов, которые мы могли бы сделать длялюбая другая программа?

Ответы [ 3 ]

2 голосов
/ 27 февраля 2012

Предполагая, что у вас есть исходный код и символы отладки для собственной (C ++) DLL, вы можете проверить опцию «Включить отладку неуправляемого кода» на вкладке «Отладка» проекта управляемого (C #) EXE, а затем установить точки останова, проверять переменные и т. д. в коде C ++ как обычно. Вы можете добавить проект C ++ в решение или просто открыть один файл исходного кода C ++ и установить там точки останова.

2 голосов
/ 27 февраля 2012

Если вы хотите отлаживать DLL, вы должны работать в вашей среде C ++, ставить точки останова в вашем коде c ++, но использовать исполняемый файл, сгенерированный c #.

0 голосов
/ 27 февраля 2012

Лучший способ отладки такого сценария - использовать отладку в смешанном режиме Visual Studio (с помощью команды devenv / debugexe yourapp.name.exe ) или использовать расширение Windbg + SOS (более крутая кривая обучения). , но это показало бы намного больше информации, например, размеры шрифта в нативном и управляемом коде) Чтобы узнать, как использовать Windbg + SOS, см. Расширенная отладка .NET от Mario Hewardt

Обратите внимание, что такие проблемы часто бывают вызваны 1) Неправильно выбранный тип данных C # для использования с C ++ API 2) Неправильно определенное / неуказанное соглашение о вызове функции http://blogs.msdn.com/b/adam_nathan/archive/2003/05/21/56690.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...