监测GHC活动

时间:2013-05-02 21:35:38

标签: haskell ghc

如果GHC需要很长时间来编译某些东西,有没有办法找出它在做什么?

首先,我很高兴知道我是否实际上已经崩溃了编译器(即,以某种方式将其置于某种无限循环中),或者它是否实际上正在取得进展,但只是非常缓慢。

其次,很高兴知道GHC在编译过程的哪个部分遇到了麻烦。它是解析,或者脱离,或类型检查,或者核心优化,还是代码生成,还是......?

有没有办法监控正在发生的事情? (请记住,如果GHC花费很长时间,这可能意味着它正在做很多工作,所以如果你要求太多的输出它将会是巨大的!

GHC已经告诉你它正在尝试(重新)编译哪些模块。就我而言,问题是一个独立的模块。我想知道GHC卡在哪里。

1 个答案:

答案 0 :(得分:4)

根据Daniel Fischer的评论,我尝试使用不同的详细选项来运行GHC。

  • -v1:产生了更多输出,但在主编译步骤中没有任何内容。
  • -v2:告诉你GHC目前正在做什么步骤(解析器,desugar,类型检查,简化器等)。这几乎就是我真正想要的。
  • -v3:似乎使简化器实际上将它正在做的事情转储到控制台 - 编译8MB源代码时的坏主意!

所以似乎-v2是开始的地方。

(在提出这个问题的程序的特定情况下,似乎GHC在类型检查阶段永远花费。)

相关问题