アルパカ三銃士

〜アルパカに酔いしれる獣たちへ捧げる〜

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.jsonargs のように指定することが可能になる。
  • program に指定するのは実体の perl プログラムである必要がある。plenv の場合だと ~/.plenv/versions/PERL_VERSION/bin 内に存在する
  • args で指定している example.pl はプロジェクトルートに設置し、デバッグしたいメソッドを実行するようにスクリプトを編集しておく。

上手く実行できると以下のような画面になる。(画像は Compiler::Lexer の場合)
ちゃんとコールスタックや変数の中身も確認することができるため、最高である👏

f:id:codehex:20180103152659p:plain

f:id:codehex:20180103153805p:plain