Shibuya.lispテクニカルトーク第7回行ってきました、
Shibuya.lisp、初参加です、
なにはともあれインパクト強すぎました、
Lispマシンを作ってみた(Youtube動画)
結局Lisp系って、「ないから」ではなく「あるけど」
「作りたいから作った」人が多いですね、
なので、久しぶりにScheme処理系作りたいと思いました。
事始めにGaucheのソースを追う環境を構築したのでその備忘録:
■Gaucheのインストール
・SLIB
$ cd ~/Downloads $ curl -O http://groups.csail.mit.edu/mac/ftpdir/scm/slib-3b3.zip $ unzip slib-3b3.zip $ cp -r slib ~/opt/slib
・Gauche
ダウンロード後、
ダウンロード後、
$ tar zxvf Gauche-0.9.2.tgz $ cd Gauche-0.9.2/ $ ./configure --prefix=/Users/tajima_junpei/opt/Gauche-0.9.2 --with-slib=/Users/tajima_junpei/opt/slib $ make $ make install $ echo "export PATH=\$PATH:/Users/tajima_junpei/opt/Gauche-0.9.2/bin" >> ~/.bashrc $ source ~/.bashrc
・確認
$ gosh gosh> (define (fact n) (if (> n 1) (* n (fact (- n 1))) 1)) fact gosh> (fact 10) 3628800 gosh> (use slib) #gosh> (require 'trace) #t gosh> (trace fact) # gosh> (fact 5) CALL fact 5 CALL fact 4 CALL fact 3 CALL fact 2 CALL fact 1 RETN fact 1 RETN fact 2 RETN fact 6 RETN fact 24 RETN fact 120 120 gosh>
■ソースを追うための準備
・GLOBALのインストール
$ cd ~/Downloads $ curl -O http://tamacom.com/global/global-6.1.tar.gz $ tar zxvf global-6.1.tar.gz $ cd global-6.1/ $ ./configure --prefix=/Users/tajima_junpei/opt/global-6.1 $ make $ make install
~/.emacs.d/.init.elに追記
;; gtags (autoload 'gtags-mode "gtags" "" t) (setq gtags-mode-hook '(lambda () (local-set-key "\M-t" 'gtags-find-tag) (local-set-key "\M-r" 'gtags-find-rtag) (local-set-key "\M-s" 'gtags-find-symbol) (local-set-key "\C-t" 'gtags-pop-stack) )) (autoload 'gtags-mode "gtags" "" t) (setq gtags-mode-hook '(lambda () (local-set-key "\M-t" 'gtags-find-tag) (local-set-key "\M-r" 'gtags-find-rtag) (local-set-key "\M-s" 'gtags-find-symbol) (local-set-key "\C-t" 'gtags-pop-stack) ))
ソースの関数上でM-tでタグジャンプ
■ソースの追い方
Emacs上にて
M-x gdb gdb --annotate=3 gosh (gdb) break repl_read_cc Breakpoint 1 at 0x20c49ba5d77dd1: file repl.c, line 103. (gdb) r Starting program: /Users/tajima_junpei/opt/Gauche-0.9.2/bin/gosh Reading symbols for shared libraries ++. done gosh> (+ 1 1)
関数repl_read_cc上にて実行が止まる、
「s」でステップ実行、「p」で変数のインスペクト
「s」でステップ実行、「p」で変数のインスペクト
0 件のコメント:
コメントを投稿