Llamo a la función en .NET usando Reflection (Method.Invoke). Si se produce un error dentro de este método y se produce una excepción, el depurador no muestra el código real sino que se detiene en la llamada a Invoke(). Puedo recuperar información de excepción de InnerException, pero esto es muy inconveniente, en comparación con la depuración regular con callstack disponible, y así sucesivamente. ¿Pueden los métodos invocados utilizando Method.Invoke depurarse como las llamadas a funciones regulares?Función de depuración invocada en .NET
Respuesta
Mi solución es crear temporizador y método de llamada dentro Tick()
:
código de interfaz gráfica de usuario -> función de llamada a través de Method.Invoke -> Ajustes de función de una temporizador -> en Tick hay cuerpo de la función
por desgracia, no es muy bonita (y no es adecuado en algunos casos)
Lo que te gusta es la función "Just My Code". El depurador limita de forma predeterminada la depuración a un código que se considera creado por el desarrollador. Esto reduce mucho ruido que estaría presente en, digamos, depurar un lanzamiento de WPF o WinForms.
Para que elementos como el asistente de excepciones se ejecuten para todos los códigos, debe desactivar Just My Code.
- Herramientas -> Opciones
- depurador
- Desactive la opción "Habilitar Sólo mi código de depuración"
Si todo lo demás falla, también se puede poner algo como esto en el método que se invoca:
#if DEBUG
System.Diagnostics.Debugger.Break();
#endif
que, básicamente, "programáticamente" causar un punto de interrupción allí.
También podría hacerlo un poco mejor haciendo:
if(Debugger.IsAttached)
Debugger.Break();
de modo que sólo se romperá si en realidad se está ejecutando en el depurador.
Editar:
En segundo pensamiento, si usted tiene el código para editarlo, entonces es probable que pueda atenerse sólo un punto de interrupción regular de allí a través de VisualStudio. Creo que mi respuesta no tiene sentido ... lo siento :)
Tu respuesta tiene mucho sentido, mira mi comentario a la respuesta de @JaredPar también. Estaba enfrentando problemas con los puntos de interrupción omitidos y tu método funcionó. – ajeh
- 1. Expresión de función invocada inmediatamente (IIFE) en JavaScript - Aprobando jQuery
- 2. aplicaciónDidFinishLaunching no invocada
- 3. Depuración en .NET en modo de lanzamiento
- 4. Depuración de métodos dinámicos .NET
- 5. Notificación de flujo de PHP Retrollamada no invocada
- 6. código de depuración Jquery función ajax
- 7. Pasando la ventana y sin definir a una función anónima invocada inmediatamente. ¿Por qué?
- 8. Función PHP crypt() en .Net?
- 9. Depuración NET Framework código fuente no disponible
- 10. ¿Es posible crear un método de solo depuración en .NET?
- 11. Desactivar el registro de depuración en Quartz .Net
- 12. Depuración aplicación .NET x86 en Windows x64 en VS2008
- 13. Ejecución y depuración de un script y función en R
- 14. Función básica de Prism (.NET)
- 15. Depuración de depuración o lanzamiento del informe?
- 16. ¿Hay una buena razón para envolver una función adicional invocada de forma inmediata alrededor de una definición de módulo requireJS?
- 17. .NET de depuración remota como otro usuario de otro dominio?
- 18. Depuración de problemas Código de C++ desde la aplicación .NET
- 19. Error de la aplicación .NET sin información de depuración
- 20. programación detección de modo de lanzamiento/depuración (NET)
- 21. Comprueba si hay una selección visual activa actual en Vim desde una función invocada por un comando
- 22. ¿Cómo obtener el nombre de la función mientras está en una función para cadenas de depuración?
- 23. "Activo (depuración)" "depuración" frente a
- 24. .NET Lista de referencias diferentes para depuración/versión
- 25. Propiedad vs Función (específicamente .NET)
- 26. Necesita el código .NET para ejecutar solo cuando se encuentra en configuración de depuración
- 27. Depuración remota en el servidor
- 28. Función de cinta usando .Net 4.5
- 29. Visual Studio 2008 - Desactivar la depuración .NET Marco
- 30. ¿Cómo puedo imprimir información sobre un NET: HTTPRequest para depuración?
por desgracia, "Habilitar Sólo mi código" ya estaba sin marcar. Pero parece irrelevante, ya que tanto la persona que llama como la llamada son en realidad mi código. – John
@John, eso es extraño. Mi siguiente paso sería activar "break-in-throw" para todos los tipos de excepción y ver si eso me dejó donde esperaba. Eso no resolverá su problema, pero nos llevará un paso más allá. – JaredPar
Eso es muy extraño, después de activar el "lanzamiento interrumpido", recibo la excepción FileNotFound para el ensamblado XmlSerializer que no se pudo cargar. Sin "break on throw", todo funciona bien. – John