debugging - ventajas - punto de interrupcion visual studio 2012
Interrumpa y continúe en el depurador GHCi sin utilizar puntos de interrupción (1)
No soy un experto en GHC, pero estoy extremadamente seguro de que ni GHC estable ni la actual GHC HEAD lo respaldan. El manual no menciona nada al respecto, y he obtenido el código HEAD actual para asegurarme de que no haya nada indocumentado, comentado o rodeado de un #if FALSE
. (Si está interesado, los comandos de GHCi actualmente mejorados se definen en /ghc/InteractiveUI.hs:136 ). No se ha publicado nada en la lista de correo sobre esto, al menos desde enero de 2013, y nadie ha archivado o cerrado error al respecto (ver la búsqueda de seguimiento de errores correspondiente ).
Esto suena como si fuera una característica útil: ¿ presentarías una solicitud de característica ?
En un depurador imperativo tradicional como gdb
, es posible entrar en el programa ejecutándose con SIGINT
, inspeccionar el estado del programa y, finalmente, reanudar la ejecución.
Mientras que GHCi permite que uno entre en la ejecución del programa en un punto arbitrario con -fbreak-on-exception
, intentar reanudar la ejecución con :continue
solo hará que el intérprete continúe con el controlador de excepciones y finalice el programa.
> let main = findCureForCancer
> :set -fbreak-on-exception
> :trace main
[twiddle thumbs]
[why is this taking so long?]
[maybe something is wrong, I better see what it''s doing]
^CStopped at <exception thrown>
_exception :: e = GHC.Exception.SomeException
GHC.IO.Exception.UserInterrupt
> :hist
...
[ahh, looks like this will just take a bit longer]
> :continue
[program should keep running]
¿Es posible ingresar en la ejecución y continuar reanudando la ejecución después de haberlo intentado un poco con el depurador GHCi?