Có công cụ tự động "đánh dấu" một số chức năng để tôi có thể nhận được xấp xỉ "ngăn xếp cuộc gọi" hay không.Lỗi gỡ lỗi: Hiển thị tên của hàm tại mỗi cuộc gọi
Thực ra, tôi muốn có một hành vi tương tự như cách bạn nhận được bằng cách viết fct = Debug.trace "fct" $ ...
mà không cần phải thêm nó trước mỗi chức năng.
Tôi biết rằng lược tả thực hiện điều gì đó tương tự với -fprof-auto, nhưng tôi cần nó được hiển thị trong khi ứng dụng đang chạy.
Một thời gian, tôi có vòng lặp vô hạn và việc hiển thị này có thể hiển thị cho tôi ngay lập tức chức năng nào bị lỗi. Sử dụng hlist và breakpoint không thực sự hữu ích vì bạn đã phải biết tên của một trong các hàm trong chu trình.
Bạn có biết "gỡ lỗi xác suất" kỹ thuật? Bạn bắt đầu chương trình đang chạy và tại bất kỳ thời điểm nào bạn chọn, hãy đột nhập vào trình gỡ rối. Bây giờ bạn có thể trong hàm mất nhiều thời gian nhất để tính toán (vì xác suất mà bạn dừng trong bất kỳ hàm nào đã cho có liên quan đến thời gian được sử dụng trong hàm đó!). –
Đúng, đó là những gì được khuyến cáo bởi tài liệu của trình gỡ lỗi GHCi (trước tiên bạn nên đặt -fbreak-on-exception). Nhưng theo như tôi nhớ lại, nó không hoạt động tốt trong lần cuối cùng tôi sử dụng nó, và tôi thực sự phải thêm vào trước mỗi cuộc gọi tên hàm để tìm ra những gì đang xảy ra. –