Mam wyrażenie nieterminacyjne w Haskell. Chcę debugować i sprawdzać powód, dla którego to się nie kończy. Technika dowiedziałem jest użycie następujących GHCi:Kontynuuj debugowanie w GHC po przerwaniu.
:set -fbreak-on-exception
:trace nonterminating_expression
^C
:hist 50
Więc mogę zapoznać się z instrukcjami, które są uruchomione w nieskończonej obliczeń. Problem polega na tym, że chciałbym kontynuować obliczanie z :step
, ignorując przerwanie. Czy mogę to zrobić?
Jakieś inne rozwiązanie do debugowania obliczeń nieterminacyjnych? (Historia większy niż 50 rejestrów lub innych praktyk, aby pomóc zadanie.)
Czy wiesz, jak ustawić punkty przerwania w dowolnym kodzie? Zrobiłbym przerwę gdzieś w nieskończonej pętli i użyłbym jej do przejścia przez iterację. – Maxander
Tak, ale problemem jest to, że dostanę wiele fałszywych połączeń. Na przykład, myślę, że mam lokalizację nieskończonego cyklu, ale każde wywołanie funkcji prowadzi tylko do nieskończonego cyklu w 1% czasu. –