Я использую Embedded Mono, он отлично работает.Основным приложением является C ++, и я могу загружать сборки, создавать объекты, вызывать методы и т. Д.
Что я хочу сделать сейчас, так это возможность использовать MonoDevelop для подключения к моей программе, а затем иметь возможностьустановить точки останова в управляемом (C #) коде.После долгих исследований я передаю следующее:
static const char* options[] = {
"--soft-breakpoints",
"--debugger-agent=transport=dt_socket,address=127.0.0.1:10000"
};
mono_jit_parse_options(sizeof(options)/sizeof(char*), (char**)options);
mono_debug_init(MONO_DEBUG_FORMAT_MONO);
После выполнения вышеуказанных вызовов приложение подключится к MonoDevelop.
На стороне MonoDevelop я установил env.var MONODEVELOP_SDB_TEST=y
, который позволяет вам использовать «Run -> Run With -> Custom Command MonoSoft Debugger, и он будет подключаться к приложению.
Вот хитрая часть: чтобы запустить Run With ->Выбор пользовательской команды MonoSoft Debugger, вам нужно открыть проект, чтобы сделать это, я просто открыл сборку (Сборка отладки), затем в опциях проекта я добавил пользовательскую команду «Выполнить» и указал на C ++ .exe, ипроверил «Запуск на внешней консоли».
После нажатия «Слушать» в диалоговом окне отладчика MonoSoft мое приложение запускается, но в выводе приложения отображаются сообщения о моих сборках, однако, если я открываю исходный файл(C #) и попробуйте установить точку останова, повернуть отключенный цвет и никогда не попадать. Чего мне не хватает, нужно ли мне вызывать какую-то другую функцию mono_debug, чтобы сообщить mono для отладки моих сборок, есть ли какая-то gdb-подобнаясвойство path, указывающее MonoDevelop, где искать источники?