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
[...]