如果GHC需要很长的时间来编译一些东西,那么有什么方法可以找出它在做什么呢?
首先,我很高兴知道我是否真的让编译器崩溃了(也就是说,以某种方式将它放入某种无限循环中),或者它是否真的在进步,但进展非常缓慢。
其次,很高兴知道GHC编译过程的哪个部分有问题。它是解析、去标记、类型检查、核心优化、代码生成,还是.?
有什么办法监视发生的事吗?(请记住,如果GHC花费了很长的时间,这可能意味着它做了大量的工作,所以如果您要求太多的输出,它将是巨大的!)
GHC已经告诉您它试图编译哪些模块。在我的例子中,问题是一个独立的模块。我想知道GHC在哪里被困住了。
发布于 2013-05-04 08:12:30
继Daniel的评论之后,我尝试使用不同的详细选项运行GHC。
-v1:产生了更多的输出,但在主要编译步骤中没有输出。-v2:告诉您GHC当前正在执行的步骤(解析器、desugar、类型检查、简化器等)。这正是我真正想要的。-v3:似乎使简化器实际上将其所做的事情转储到控制台--在编译8MB的源代码时,这是个坏主意!因此,-v2似乎是开始的地方。
(在引发此问题的程序的具体情况下,GHC似乎永远处于类型检查阶段。)
https://stackoverflow.com/questions/16348118
复制相似问题