Подтвердить что ты не робот

Мониторинг деятельности GHC

Если GHC занимает много времени, чтобы скомпилировать что-то, есть ли способ узнать, что он делает?

Во-первых, было бы неплохо узнать, действительно ли я разбил компилятор (т.е. каким-то образом помещал его в какой-то бесконечный цикл), или он действительно продвигается, но очень медленно.

Во-вторых, было бы хорошо знать, с какой частью процесса компиляции GHC возникает проблема. Это разбор или десураринг или проверка типов, или оптимизация ядра, или генерация кода, или...?

Есть ли способ контролировать, что происходит? (Принимая во внимание, что если GHC занимает много времени, это, вероятно, означает, что он много работает, поэтому, если вы попросите слишком много результатов, это будет огромным!)

GHC уже сообщает вам, какие модули он пытается (повторно) компилировать. В моем случае проблема заключается в одном автономном модуле. Я хотел бы знать, где GHC застрял.

4b9b3361

Ответ 1

Следуя комментарию Даниэля Фишера, я попробовал запустить GHC с различными вариантами подробностей.

  • -v1: Произведено немного больше вывода, но ничего не было на основном этапе компиляции.
  • -v2: Сообщает вам, какой шаг выполняет GHC (парсер, десагар, проверка типа, упрощение и т.д.). Это в значительной степени то, что я действительно хотел.
  • -v3: Появляется, чтобы заставить упроститель фактически сбрасывать то, что он делает с консолью - плохая идея при компиляции 8 МБ исходного кода!

Итак, кажется, что начало -v2.

(В конкретном случае программы, вызвавшей этот вопрос, кажется, что GHC навсегда проверяет фазу проверки типов.)