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
の場合)
ちゃんとコールスタックや変数の中身も確認することができるため、最高である👏