「コールスタック」の近似を得るために、いくつかの関数を自動的に「マーク」するツールはありますか?デバッグhaskell:各呼び出しで関数の名前を表示
実際には、それぞれの機能の前に追加することなく、fct = Debug.trace "fct" $ ...
と書くことで、同じような動作をしたいと思います。
私はプロファイリングが-fprof-autoと似たようなことを知っていますが、アプリケーションの実行中に表示する必要があります。
私は無限ループを持ち、このディスプレイを持っているとすぐにどの機能が故障しているかをすぐに見ることができます。 hlistとブレークポイントの使用は、サイクル内の関数の名前を知っている必要があるため、実際には役に立ちません。
あなたは「確率的なデバッグ」技術を知っていますか?プログラムの実行を開始すると、いつでもデバッガを起動することができます。あなたはおそらく関数に(おそらく、ある関数で停止する確率はその関数で費やされた時間に関係しているので)計算に最も時間がかかるでしょう。 –
これは、GHCiデバッガのドキュメントで推奨されているものです(最初に-fbreak-on-exceptionを設定する必要があります)。しかし、私が思い出す限り、前回使用したときはうまく機能せず、何が起きているのかを知るために関数名の前にそれぞれの関数を追加しなければなりませんでした。 –