Я рекомендую использовать Mono Soft Debugger. Он включен в среду выполнения Mono начиная с Mono 2.6, он более надежен, чем старый жесткий отладчик, а также гораздо более переносим.
Программный отладчик Mono можно запустить, передав параметры с помощью аргумента командной строки --debugger-agent
в среду выполнения Mono. Это можно сделать из встроенного хоста, создав поддельный набор аргументов командной строки и передав его в mono_jit_parse_options
. Например, плагин браузера Moonlight использует значения агента отладчика из переменной среды MOON_SOFT_DEBUG, если она установлена.
Обычно параметры отладчика выглядят как
--debugger-agent="transport=dt_socket,address=$ADDRESS:$PORT"
, что заставит приложение попытаться подключиться к отладчику, прослушивающему по указанному адресу, и приостановит работу, пока не установит соединение. Обратите внимание, что соединение устанавливается через TCP / IP, что означает, что удаленную отладку очень легко настроить, и даже на локальном компьютере вы будете использовать localhost. Дополнительные параметры описаны на справочной странице Mono.
Другая необходимая вам часть - это графический интерфейс / контроллер отладчика, чтобы прослушивать соединение из вашего приложения, обрабатывать пошаговые операции / визуализацию и т. Д. Я бы предложил использовать MonoDevelop. Существует библиотека для проводного протокола отладчика, которая называется Mono.Debugger.Soft.dll, но она довольно низкоуровневая, и хотя Mono Tools для Visual Studio поддерживает подключение к программному отладчику, она еще не расширяема таким образом, чтобы можно было отлаживать Mono встраивание хостов.
Использование MonoDevelop для приема подключений отладчика от встраиваемых хостов в настоящее время требует создания надстройки, но это довольно просто. Взгляните на Лунный отладчик addin для примера. Для простых случаев использования я бы предложил, чтобы вы не определяли целый новый тип проекта, а просто создавали обработчик отладки, который обрабатывает существующие проекты DotNetExecutionCommand, так что вы можете run-> run with ...-> your custom debugger .
Список рассылки monodevelop-list - хороший ресурс, если у вас есть дополнительные вопросы.