Как вы получаете GHC для вывода ошибок компиляции в файл вместо стандартного вывода? - PullRequest
2 голосов
/ 23 января 2012

Я пытаюсь скомпилировать файл haskell, в котором содержится ОГРОМНОЕ количество ошибок.Я хочу начать отладку первого, но, к сожалению, их так много, что они исчезают с экрана.

Я хочу передать сообщения об ошибках в файл, чтобы я мог читать сверху, но обычные методы неКажется, не работает.

Я пытался:

ghc File.hs > errors.log
ghc File.hs >> errors.log
ghc File.hs | more

Ни один из них не работает.Использование > и >> записывает только первую пару строк в файл, а затем остальные в стандартный вывод.Использование more, less, cat и т. Д. Вообще ничего не меняет.

Есть ли флаг для GHC, который позволит мне выводить данные в файл?Вероятно, я должен сообщить вам, что я работаю на Windows-машине с Cygwin.)

Ответы [ 2 ]

9 голосов
/ 23 января 2012

Большинство программ записывают вывод в стандартный вывод (дескриптор файла 1) и сообщения об ошибках в стандартную ошибку (дескриптор файла 2).

Вы можете попросить свою оболочку перенаправить стандартную ошибку вв другом месте, подобном следующему:

ghc File.hs > output.log 2> errors.log

или, если вы хотите, чтобы они были в том же файле:

ghc File.hs > output.log 2>&1

См. раздел перенаправлений на странице вашей оболочки для получения полной информации.Обратите внимание, что оболочки требовательны к порядку перенаправлений.

4 голосов
/ 23 января 2012

Вы также можете просмотреть вывод напрямую, используя тот же редирект, что и у решения sarnold, но без промежуточного выходного файла:

ghc File.hs 2>&1 | less

(то же самое относится к more вместо less и т. Д.)

...