lispのおかしい所を調べたい

 どういう風に調べるといいのか、あまり理解していないんだけど。最近alignモドキが何で遅いか色々調べてみていたら。sit-forを色々挟むと動いてる様が見れて問題になってる処理の遅い所が分かっていいなぁと思った。多分、もっといい方法があるんじゃないかと思うけど(いや、きっとあるはず)。
 おかしい所が分からないときに、最近しているやり方。

  1. messageを色んな所に入れて変数の中身が何をしているかみる。
  2. sit-forを色々な所に挟んで、動作をバラバラに切り刻んで部分ごとに動いてる所をみる。
  3. おかしいと思われる関数だけ抜き出して*Scratch*でチョット変えたりして試してみる。
  4. テスト用の関数を別に作って、動かしてみる。
  5. 条件分岐とかにyes-no-or-cancel-pを入れてみる。今考えたらsit-forで細切れが便利だったんだから、yes-no-or-cancel-pで動作を細切れにするのもいいかも。
  6. 遅いときは怪しい所に(let ((st (get-internal-real-time)))と(message "time ~A " (- (get-internal-real-time) st)))で挟んでみる。
  7. 今気づいたけど、エラーの奴も良さそうだ

 自分が適当に思いつきでやっているだけなので、普通はもっと賢いやり方があるのかもしれない。
調べたらこんなのが出てきた。
xyzzy -- デバッグの方法
http://www.netlaputa.ne.jp/~henmi/lisp/xyzzy/editor/971024.html
けど良く意味が分からない。