Я пытаюсь отлаживать большую сложную программу в Haskell, которую я не полностью написал сам.Haskell: Поиск источника незавершенного построения записи
Я пытаюсь распечатать свои структуры данных, чтобы диагностировать ошибку, но когда я это сделаю, я получаю следующую ошибку: error: Prelude.undefined
. Как вы можете видеть, эта ошибка крайне неинформативна.
Я уверен, что это происходит из записи, которую я «частично» инициализировал, где я пытаюсь получить доступ к полю, значение которого не было установлено.
Программа (компилятор) распространяется на два проекта cabal, библиотеку и исполняемый файл, который использует эту библиотеку. Это делает отладку с использованием GHCI/cabal-repl hard: я не могу запустить GHCi в исполняемом файле, потому что это не источник ошибки, но воссоздать ввод, который предоставляет исполняемый файл библиотеке, слишком сложно сделать вручную.
Мне интересно: что я могу сделать, чтобы получить больше информации о том, где создается некорректная запись, какое поле является источником ошибки и т. Д. Есть ли опция RTS или что-то, что я могу использовать, чтобы дать больше информация для вывода ошибок?
Я понятия не имел, вы могли бы на самом деле получить трассировку стека. Жаль, что вам нужно перекомпилировать всю платформу Haskell для профилирования, но эй ... – MathematicalOrchid
К счастью, у меня было достаточно прошлых проблем с профилированием, что у меня уже была вся моя песочница, скомпилированная с профилированием ... – jmite