Gauche(Scheme) のデバッグ環境構築

アドベントカレンダー 1 日目 by @takkyuuplayer

計算機プログラムの構造と解釈 第二版 の勉強会を会社の同僚としている。

今回は前々から欲しかった GaucheSLIB 使って↓みたいな Stacktrace を出すための環境構築の話。

  • fibonacci
(use slib)
(require 'trace)

(define (fibonacci n)
  (cond ((= n 0) 0)
        ((= n 1) 1)
        (else (+ (fibonacci (- n 1))
                 (fibonacci (- n 2))))))

(trace fibonacci)
(fibonacci 3)
CALL fibonacci 3    
  CALL fibonacci 2  
    CALL fibonacci 1
    RETN fibonacci 1
    CALL fibonacci 0
    RETN fibonacci 0
  RETN fibonacci 1  
  CALL fibonacci 1  
  RETN fibonacci 1  
RETN fibonacci 2    

とりあえず環境だけ欲しい人向け

私は LPM: Local Package Manager を利用して $HOME/lcl 内にいろいろソフトウェアをインストールしている。 オレオレスクリプトtakkyuuplayer/lpm · GitHub にあるので、 LPM が使えるなら

$ git clone https://github.com/takkyuuplayer/lpm.git
$ cd lpm

$ lpm install scripts/texinfo.lpm
$ lpm install scripts/slib.lpm
$ lpm install scripts/gauche.lpm

$ export SCHEME_LIBRARY_PATH=$LPM_LIB/slib/

で使えるようになる。

環境構築中にはまったところ

  • makeinfo が無いと言われる

texinfo の中に入っているのでそれをインストール

  • must be after @defun to use @defunx texinfo とかいうエラー

texinfoが 5.x 系だとインストールできなかった。おとなしく 4.x 系をインストールすることに。

#712322 - slib: FTBFS: manuals build fails against textinfo5 because some incompatibles changes wrt 4.13 and below (some warnings have turned into errors) - Debian Bug report logs

  • ginstall-info が無いと言われる

install-info という名前で入っていたので symlink 貼った。

$ ln -fs $LPM_BIN/install-info $LPM_BIN/ginstall-info

次回予告

明日の担当も @takkyuuplayer です。