mono --debug
не имеет ничего общего с отладчиком, он просто заставляет Mono отслеживать отладочную информацию, чтобы он мог предоставить вам информацию о файлах / строках / столбцах в следах.
Поведение System.Diagnostics.Debugger.Break()
зависит от вашей моно версии.AFAIK в своей базовой форме устанавливает жесткую точку останова, поэтому, если ваше приложение не работает в собственном жестком отладчике, оно просто рухнет.Если ваше приложение работает в Mono Soft Debugger с Mono 2.11 или более поздней версии (которая еще не была выпущена), оно установит мягкую точку останова для Soft Debugger и будет работать как положено.
Основной способ включенияотладка надстроек заключается в установке собственной команды выполнения в вашем проекте надстройки.Откройте «Параметры проекта», перейдите в раздел «Выполнить> Пользовательские команды», добавьте пользовательскую команду для «Выполнить».Задайте для исполняемого файла MonoDevelop.exe, а рабочим каталогом будет его содержащий каталог.Это означает, что когда вы запускаете / отлаживаете свой проект, MD фактически выполнит этот исполняемый файл вместо непосредственного выполнения вашего проекта.Если MonoDevelop.exe загружает ваше дополнение, вы сможете установить точки останова, шаг и т. Д.
Сложная часть - заставить MD загрузить ваше дополнение.Один из способов сделать это состоит в том, чтобы ваш проект вывел addin dll в один из каталогов, которые MD ищет надстройки, но это очень хакерская вещь во время разработки.Лучшее решение - использовать недокументированную переменную среды MONODEVELOP_DEV_ADDINS, чтобы указать дополнительный каталог, из которого MD может загружать надстройки.В MD нет пользовательского интерфейса для установки переменных env для пользовательских команд, но он поддерживается внутри - вам придется вручную редактировать файл csproj.
Найдите часть, которая выглядит следующим образом:
<CustomCommands>
<CustomCommands>
<Command type="Execute"
command="..\..\..\monodevelop\main\build\bin\MonoDevelop.exe"
workingdir="..\..\..\monodevelop\main\build\bin" />
</CustomCommands>
</CustomCommands>
И измените его на:
<CustomCommands>
<CustomCommands>
<Command type="Execute"
command="..\..\..\monodevelop\main\build\bin\MonoDevelop.exe"
workingdir="..\..\..\monodevelop\main\build\bin">
<EnvironmentVariables>
<Variable name="MONODEVELOP_DEV_ADDINS" value="${TargetDir}" />
</EnvironmentVariables>
</Command>
</CustomCommands>
</CustomCommands>
Если вам интересно, почему элементы <CustomCommands>
имеют две глубины, это известная ошибка.