Nếu GHC mất nhiều thời gian để biên dịch một cái gì đó, có cách nào để tìm hiểu xem nó đang hoạt động không? Đầu tiên, nó sẽ là tốt đẹp để biết nếu tôi đã thực sự bị rơi trình biên dịch (tức là, đặt nó vào một số loại vòng lặp vô hạn bằng cách nào đó), hoặc cho dù nó thực sự tiến bộ, nhưng chỉ rất chậm.Giám sát hoạt động của GHC
Thứ hai, thật tuyệt khi biết chính xác phần nào của quá trình biên dịch GHC gặp sự cố. Đó có phải là phân tích cú pháp, hoặc loại bỏ, hoặc kiểm tra kiểu, hoặc tối ưu hóa hoặc tạo mã, hoặc ...?
Có cách nào để theo dõi những gì đang xảy ra không? (Lưu ý rằng nếu GHC mất nhiều thời gian, điều đó có thể có nghĩa là nó đang làm rất nhiều công việc, vì vậy nếu bạn yêu cầu quá nhiều đầu ra, nó sẽ là lớn!)
GHC đã cho bạn biết mô-đun nào nó đang cố gắng biên dịch lại. Trong trường hợp của tôi, vấn đề là một mô-đun độc lập. Tôi muốn biết GHC đang gặp khó khăn ở đâu.
Bạn có thể xây dựng một phiên bản cấu hình của GHC và sau đó sử dụng các công cụ profiling tiêu chuẩn để xem những gì nó là đến sau khi thực tế. – Davorak
Bạn có thể yêu cầu trò chuyện bằng cách chỉ định độ dài '-v4' cho bạn biết ** nhiều ** những gì đang diễn ra - có, đầu ra sẽ rất lớn, nhưng nếu bạn chỉ muốn theo dõi nó, hãy để nó thiết bị đầu cuối, thường chỉ ghi nhớ 1000 dòng cuối cùng. –
Theo kinh nghiệm của tôi, GHC đi vào vòng lặp vô hạn có thể được nhận ra bởi vì bất cứ thứ gì có hiệu quả, nó sẽ làm việc chậm chạp, khiến cho nó ăn nhiều bộ nhớ ... –