如果GHC花費很長時間來編譯某些東西,有沒有辦法找出它在做什麼?首先,很高興知道我是否真的崩潰了編譯器(即將它放入某種無限循環),或者它實際上正在取得進展,但速度非常緩慢。其次,很高興知道GHC在編譯過程中遇到什麼問題。它是解析,或者是desugaring,或者類型檢查,或者核心優化,或者代碼生成,或者......?監測GHC活動
有什麼方法可以監視發生了什麼? (請記住,如果GHC需要很長時間,這可能意味着它做了很多工作,所以如果你要求輸出太多,這將會是巨大的)
GHC已經告訴你哪些模塊它試圖(重新)編譯。就我而言,問題是一個單獨的自包含模塊。我想知道GHC卡在哪裏。
你可以建立GHC的成型版本,然後使用標準的分析工具來查看事後要做什麼。 – Davorak 2013-05-02 22:50:51
你可以通過指定一個詳細程度來讓它變得健談--v4告訴你很多**正在發生什麼 - 是的,輸出將是巨大的,但是如果你只是想監視它,讓它去終端,通常只記得最後的1000行左右。 – 2013-05-02 22:51:09
根據我的經驗,GHC進入一個無限循環可以被識別,因爲任何生產效率它會這樣做慢慢地通常會使它吃很多內存以及... – 2013-05-03 14:02:50