言語ゲーム

とあるエンジニアが嘘ばかり書く日記

Twitter: @propella

Windows 版 Squeak VM をデバッグする。

WindowsSqueak VMデバッグ方法について書きます。分かってしまえば当たり前ですが、知らないと意味不明なので。

3.7.1 (現在 Squeakland イメージに含まれている物)

Makefile.mingw32 の修正

なぜか make の引数で CFLAG を渡すとエラーになるので、野蛮ですが Makefile を手で書き換えます。参考までに diff を載せますが、ようするに最適化オプションをことごとく無効にするのと、strip を消す事です。最初 -f が最適化オプションだと知らずにはまりました。

96c96
< CFLAGS=		-g -mpentium -mwindows -O3 -fomit-frame-pointer -funroll-loops -fschedule-insns2
---
> CFLAGS=		-g -mpentium -mwindows -O0
113c113
< LDFLAGS=	-mwindows
---
> LDFLAGS=	-g -mwindows
154d153
< 		strip --strip-all $(VMOUTDIR)/$(VM)
183d181
< 	strip --strip-all $(OBJDIR)/$(LIB).dll

これで gdb が使えます。cygwin でも mingw でも同じように使えるようです。ファイル名が見つからない場合がよくありますが、以下のコマンドで検索パスを追加できます。

(gdb) dir ~/src/3.7.1/win32/plugins/OggPlugin

Meadowデバッグする方法も調べようと思ったのですが、あまりにも面倒臭そうなので、コマンドラインデバッグする事にしました。

参考

愚痴

プラグインのビルド環境を整えるだけで一日終わりそうだ(そしてまだ終わらない)。なんでスクイークってこんなに開発しにくいんだろう。。。