Отладка сборки C # запущено встроенным моно выполнением?

StackOverflow https://stackoverflow.com/questions/3649503

Вопрос

Я говорю о небольшом игровом двигателе, используя C # для программирования игры. Итак, у меня есть приложение C ++, встраиваемое моно выполнения Mono (я называю это «Launcher»). И у меня есть сборка, написанная в C #, которая является моей библиотекой класса игр. Лаунчер запускает сборку, как это предложено в Встраивание моно.

А теперь интересная часть! Инструменты запуска установки в функциях C ++ выполнены функциями, которые подвергаются воздействию моно-среды выполнения в качестве внутренних методов моих игровых классов двигателей. Вот почему мою сборку игрового двигателя ничто без запуска, которая реализует огромную часть двигателя в C ++.

Вопрос: Как я должен отлаживать мою сборку C #? А что важнее, как я должен отлаживать игру, которую я собираюсь написать в C # ???

Как вы понимаете, я не могу отладить сборку с помощью монодовой отладчика, потому что он не будет получать внутренние реализации C ++ некоторых его методов.

Что мне нужно, это запустить пусковую установку. Затем пункт запускается сборка C # с использованием встроенного моно выполнения. И тогда мне нужно что-то для подключения к запущенной сборке, чтобы позволить его отладке.

Или любой другой путь. Спасибо!

Это было полезно?

Решение

Я рекомендую использовать Mono Soft Rebugger. Он был включен в моно-время выполнения со времен MONO 2.6 и является более надежным, чем старый жесткий отладчик, а также гораздо более портативный.

Mono Soft Debugger может быть запущен с помощью параметров, используя --debugger-agent Аргумент командной линии к моно выполнению. Это может быть сделано с хозяина вложения, построив поддельный набор аргументов командной линии и передаю его mono_jit_parse_options. Отказ Например, плагин браузера Moonlight использует значения агента отладчика от переменной среды Moon_soft_debug, если она установлена.

Как правило, отладчики параметры что-то вроде

--debugger-agent="transport=dt_socket,address=$ADDRESS:$PORT"

Что приведет к приложению попытаться подключиться к отладчике, слушающую на данном адресе, и пауза, пока оно не устанавливает соединение. Обратите внимание, что соединение установлено по поводу TCP / IP, что означает, что удаленная отладка очень проста в настройке, и даже на локальном компьютере вы бы использовали localhost. Дополнительные варианты документированы на странице Mono Man.

Другой кусок, который вам нужен, это отладчик GUI / Controller, чтобы прослушать подключение к вашему приложению и обрабатывать шаговую / визуализацию и т. Д. Я бы предложил использовать монодевто. Существует библиотека протокола провода отладчика, называемого mono.debugger.soft.dll, но это довольно низкий уровень, и хотя моно инструменты для Visual Studio поддерживают подключение к мягкому отладчике, он еще не расширяется таким образом, чтобы позволить отладку моно Встраивание хозяев.

Используя MONODEVELEP для приема отладчиков подключений из встраиваемых хостов в настоящее время требует создания аддина, но это довольно просто. Посмотрите на Moonlight Debugger Addin Например. Для простых случаев использования я бы предположил, что вы не определяете целый новый тип проекта, но просто создайте обработчик отладки, который обрабатывает существующие проекты DOTNETEXCUVEWUTIONCCOMMED, чтобы вы могли Run-> Беги с ...-> Ваш пользовательский отладчик.

То монодевослотный список Почтовый список - хороший ресурс, если у вас есть больше вопросов.

Другие советы

Использовать сетевую отладку.

Вы могли бы использовать Мягкий отладчик отладки моновых запчастей, а затем использовать удаленная отладка для частей C ++.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top