Perl XS デバッグを vscode で行う
タイトルの通り、vscode を使って XS のデバッグを行う。
環境は Mac OS X El capitan MacBook Air (11-inch, Mid 2012) で lldb を用いる。Perl は 5.24.1 で plenv を使って管理している。
まずはデバッグしたいプロジェクトを vscode で開き、launch.json を以下のように編集しなければならない。
{ "version": "0.2.0", "configurations": [ { "name": "(lldb) Launch", "type": "cppdbg", "request": "launch", "program": "/Users/codehex/.plenv/versions/5.24.1/bin/perl5.24.1", "args": ["-Iblib/arch", "-Iblib/lib", "example.pl"], "stopAtEntry": false, "cwd": "${workspaceRoot}", "environment": [], "externalConsole": true, "MIMode": "lldb" } ] }
Minillaを使ってビルドしている場合 -プロジェクトルートにBuild.PLがあるため、perl ./Build.PL && ./Buildを実行する必要がある。- これを実行するとプロジェクトルートに
blibといったディレクトリが作成され、launch.jsonのargsのように指定することが可能になる。
- これを実行するとプロジェクトルートに
programに指定するのは実体のperlプログラムである必要がある。plenvの場合だと~/.plenv/versions/PERL_VERSION/bin内に存在するargsで指定しているexample.plはプロジェクトルートに設置し、デバッグしたいメソッドを実行するようにスクリプトを編集しておく。
上手く実行できると以下のような画面になる。(画像は Compiler::Lexer の場合)
ちゃんとコールスタックや変数の中身も確認することができるため、最高である👏

