Pregunta

estoy hablando de un motor de juego pequeño usando C # para la programación de juegos. Por lo tanto, tengo una aplicación C ++ incrustación mono tiempo de ejecución (lo llamo 'lanzador'). Y tengo una asamblea escrito en C #, que es mi biblioteca de clases motor de juego. Los lanzamientos del lanzador del montaje como se sugiere en incrustación Mono .

Y ahora la parte interesante! Los implementos de lanzadores en funciones misceláneos C ++ que están expuestas a la mono tiempo de ejecución como métodos internos de mis clases de motores de juego. Por eso, mi motor de juego de montaje no es nada sin el lanzador que implementa una gran parte del motor en C ++.

La pregunta: ¿Cómo se supone que voy a depurar mi C # asamblea? Y lo que es más importante, ¿cómo se supone que voy a depurar un juego que voy a escribir en C # ???

A medida que entienda que no puedo depurar el ensamblaje usando MonoDevelop depurador porque no va a recibir C ++ implementaciones internas de algunos de sus métodos.

Lo que necesito es ejecutar el Launcher. El lanzador continuación, se iniciará el montaje de C # utilizando incrustado mono tiempo de ejecución. Y entonces necesito algo para conectar con el conjunto puesto en marcha para permitir su depuración.

O de otra manera. Gracias!

¿Fue útil?

Solución

Yo recomiendo usar el depurador Mono suave. Se ha incluido en el tiempo de ejecución Mono Mono desde 2,6, y es más fiable que el antiguo depurador duro, y también mucho más portátil.

El depurador suave Mono puede ser iniciado por el que pasan las opciones utilizando el argumento --debugger-agent línea de comandos para el tiempo de ejecución Mono. Esto se puede hacer desde un host incrustación mediante la construcción de un conjunto de falsos argumentos de línea de comandos y pasándolo a mono_jit_parse_options. Por ejemplo, el navegador Plugin Moonlight utiliza los valores de agente depurador de variable de entorno MOON_SOFT_DEBUG si se establece.

Normalmente depurador opciones son algo así como

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

lo que hará que la aplicación intente conectarse a la escucha depurador en la dirección indicada, y la pausa hasta que se establece una conexión. Tenga en cuenta que la conexión se establece a través de TCP / IP, que significa la depuración remota es muy fácil de configurar, e incluso en la máquina local se utilizaría localhost. Las opciones adicionales están documentados en la página hombre de Mono.

La otra pieza que necesita es la interfaz gráfica de usuario depurador / controlador, para escuchar la conexión de su aplicación, y el mango paso a paso / visualización, etc. Se recomienda usar MonoDevelop. Hay una biblioteca para el protocolo de conexión depurador llamado Mono.Debugger.Soft.dll, pero es bastante bajo nivel, y aunque Mono Tools para Visual Studio soportes que conectan con el depurador suave, sin embargo, no es extensible en una forma que permita la depuración Mono la incrustación de hosts.

El uso de MonoDevelop para aceptar conexiones de depuración de los anfitriones Embedding requiere la creación de un complemento, pero esto es bastante sencillo. Echar un vistazo a la Moonlight depurador complemento para un ejemplo. Para los casos de uso sencillos Yo sugeriría que no se define todo un nuevo tipo de proyecto, pero sólo crea un controlador de depuración que los mangos de proyectos DotNetExecutionCommand existente, por lo que puede Run-> correr con ...-> el depurador de encargo .

El href="http://lists.ximian.com/pipermail/monodevelop-list/" rel="noreferrer"> monodevelop lista de lista de correo

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top