言語ゲーム

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

Twitter: @propella

meadow + mingw で gdb を使う方法。


告白すると、初めて meadow の gud モードにチャレンジした時はまだ20世紀の事でした。何度ドキュメントを読み、何度試しても失敗の連続。しかし、ついに meadowgdb を使う方法が分かったので書きます。

環境変数を設定する。

まず Windows環境変数を設定します。マイコンピュータ - プロパティ - 詳細設定 - 環境変数で PATH を設定します。ちゃんと mingwgdb を指すようにします。

例: C:\msys\1.0\bin;C:\msys\1.0\mingw\bin;C:\msys\1.0\local\bin;C:\ghc\ghc-6.8.2\bin;C:\Program Files\erl5.5.4\bin;%PATH%

マウントする。

mingw では Windows とちょっと違うパスを使い、例えば c:\takashi が /c/takashi のようになってしまいます。これでは meadow が混乱してしまうので、マウント機能を使ってパス名を割り当てます。例えば、私はソースコードは c:\takashi というディレクトリに入れてるのですが、これを mingw から見たときに /takashi になるようにすると、Meadow はちゃんと c:\takashi の事だなと判断します。

具体的には /etc/fstab (実体は C:\msys\1.0\etc\fstab) というファイルを作り次のように書き込みます。

$ vi /etc/fstab
c:/takashi              /takashi

失敗の原因

まず、emacsgdb を PATH 環境変数から探しますが、どうも emacs が起動した時の PATH を読むようです。私は Windows の設定を触るのが嫌で、環境変数の設定は .emacs 内で行っていたのですが、いくら setenv を使っても無駄でした。特に、shell モードや M-! は setenv で設定した PATH を使うので大変混乱しました。一台の PC に mingwcygwin やそのほか似たような色んな物を入れてない人ならつまづかないかも知れません。