Pregunta

Ejecuto mi programa en C #, que luego llama a C ++ no administrado.

Cuando me interrumpo en una línea en el C ++ no administrado, el elemento de menú "Nuevo punto de interrupción de datos" aparece en gris.

¿Hay alguna forma alrededor de esto?

¿Fue útil?

Solución

Para establecer un punto de interrupción de datos en la parte nativa de un proceso de modo mixto, consulte la respuesta publicada por jyoung .

Visual Studio deshabilita los puntos de interrupción de datos cuando se ejecuta cualquier cosa que no sea código nativo puro. Consulte this publicar para una explicación parcial de por qué desde un administrador de programas VS.

Otros consejos

Así que para hacer esto tuve que:

  • configura la dll no administrada como el proyecto de inicio
  • configura el programa administrado como el comando de inicio
  • establece el modo de depuración como Native
  • " ejecución de ruptura " o llega a un punto de interrupción para que estés en " depuración " estado

yech

La solución sugerida no funciona todo el tiempo. Incluso cuando se realiza la depuración en modo nativo, con el programa roto en la parte del código nativo, al intentar establecer un 'Nuevo punto de interrupción de datos' aparece una ventana emergente " El punto de interrupción no se puede establecer. Los puntos de interrupción de datos no se admiten en Common Language Runtime "

La alternativa es agregar puntos de interrupción de datos desde el código directamente. Consulte el artículo aquí .

Esto funciona bien en modo mixto, solo requiere que el modo de depuración nativa esté activo (como se sugirió anteriormente)

Un truco muy útil que funciona en todas partes es llamar a puntos de interrupción desde el código en condiciones especiales:

If (Condition)
    System.Diagnostics.Debugger.Break()
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top