Pythonのツール・サポート

GraalVMのPythonランタイムは不完全であり、標準のPythonデバッガpdbを起動することはできません。ただし、GraalVMで提供されているツールは実行できます。graalpython --help:toolsコマンドを使用すると、Pythonで現在サポートされているツールに関する詳細情報を確認できます。

デバッガ

デバッグを有効にするには、--inspectオプションをgraalpythonランチャに渡します。たとえば:

graalpython --inspect -c "breakpoint(); import os; os.exit()"
Debugger listening on port 9229.
To start debugging, open the following URL in Chrome:
    chrome-devtools://devtools/bundled/js_app.html?ws=127.0.1.1:9229/76fcb6dd-35267eb09c3

標準のPython組込みのbreakpoint()は、GraalVMのChromeインスペクタ実装を使用して動作します。変数の検査、ウォッチ式の設定、対話形式によるコード・スニペットの評価などを行うことができます。ただし、これが動作するのは、--inspectまたはその他の検査オプションを渡した場合のみです。それ以外の場合は、CPythonの場合と同様にpdbがトリガーされます(現時点では動作しません)。

コード・カバレッジ

GraalVMには、--coverageで使用できるカバレッジ・インストゥルメントが付属しています。その使用方法の詳細を確認するには、graalpython --help:toolsコマンドを使用します。

既存のPythonコードとより効果的に連携するために、オーバーヘッドが少ないこのGraalVMカバレッジ・インストゥルメントとともに、標準ライブラリのtraceモジュールが部分的にサポートされています。そのため、次を実行できます:

graalpython -m trace -m -c -s my_script.py

これは、CPythonで動作するのと同じように機能します。

プログラムによるAPIも機能しますが、いくつかの制限があります。たとえば、現時点ではコールは追跡されず、行数とコールされた関数のみが追跡されます。

プロファイリング

_lsprof組込みモジュールは、GraalVMのcpusamplerツールを使用して実装されています。現時点ではすべてのプロファイリング機能がサポートされているわけではありませんが、基本的なプロファイリングは動作します:

graalpython -m cProfile -s sort -m ginstall --help

統計出力ファイルの対話型探索も動作します:

graalpython -m cProfile -o ginstall.profile -m ginstall --help
graalpython -m pstats ginstall.profile
ginstall.profile%
callers
[...]