Actualmente estoy depurando un algoritmo que implementé en Haskell para mi tesis de Diploma. Parece que funciona correctamente para la mayoría de los insumos, sin embargo, me encontré con una entrada que hace GHC tirar el errorCómo mostrar una traza inversa para un Error arrojado en Haskell
*** Excepción: Map.find: Elemento no en el mapa
Como tengo muchos Búsqueda de mapas en mi código, necesito encontrar la línea que arroje este error para darle sentido. He leído a través this guide, pero aunque me puse la bandera fbreak-on-exception
(y -error
), todos GHCi me da después de trazar la función Soy la prueba es:
[...]> :trace test
[...]
Stopped at <exception thrown>
_exception ::
e = GHC.Exception.SomeException (GHC.Exception.D:Exception _
(GHC.Show.D:Show ...) ....)
(GHC.Exception.ErrorCall ['M',....])
Unable to list source for <exception thrown>
Try rerunning with :trace, :back then :list
[<exception thrown>] [...]> :history
Empty history. Perhaps you forgot to use :trace?
Tratando :trace
nuevo no parece ayudar a cualquiera.
Entonces, ¿alguien me puede decir lo que está pasando u ofrecer otra forma de encontrar la línea ofensiva? ¡Gracias por adelantado!
PD: Estoy usando la versión 7.0.3 de GHC, por lo que debe aplicarse la guía vinculada.
ver [aquí] (http://stackoverflow.com/questions/8595077/how-can-i-get-the-position-where-error-was-llamado) para una mejor solución – Simon