ComfyUI のスタックトレースを取得する
カテゴリ:deeplearning
viztracer
ComfyUI にスタックトレースを表示する機能はないので、viztracer を使う。
./venv/Script/activate pip install viztrace
実行
./venv/Script/activate viztrace --ignore_frozen main.py
終了は Ctrl + C
結果の表示
viztrace result.json
1回生成しただけで 150MB のログデータになった。
debugpy
VSCode 上でステップ実行したいなら debugpy を使う。
./venv/Script/activate pip install debugpy
ComfyUI 側の準備(デバッグ用コードの挿入)
__init__.py 等に以下のコードを追加。
import debugpy
try:
# 5678ポートで接続を待機。すでに起動している場合はスキップ
debugpy.listen(("127.0.0.1", 5678))
print("Wait for debugger attach...")
# debugpy.wait_for_client() # デバッガが接続されるまで起動を止めたい場合は有効にする
except Exception as e:
passVS Code の設定 (launch.json)
プロジェクトに .vscode/launch.json を配置。
launch.json ファイルの内容
{
"version": "0.2.0",
"configurations": [
{
"name": "Python: ComfyUI Attach",
"type": "debugpy",
"request": "attach",
"connect": {
"host": "127.0.0.1",
"port": 5678
},
"pathMappings": [
{
"localRoot": "${workspaceFolder}",
"remoteRoot": "."
}
]
}
]
}デバッグの開始とステップ実行
- ComfyUI を通常通り起動(コンソールに Wait for debugger attach... と表示される)
- VS Code で F5キー を押し、「Python: ComfyUI Attach」を開始
- 解析したいコードの行番号の左側をクリックして、ブレークポイント を付ける
- ブラウザから ComfyUI のプロンプトを実行(Queue Prompt)
操作
- 続行 (F5): 次のブレークポイントまで一気に実行
- ステップオーバー (F10): 次の行へ進む(関数の中には入らない)
- ステップイン (F11): 関数の中に入って詳細を見る
- ステップアウト (Shift+F11): 今いる関数を抜けて、呼び出し元に戻る
