''' A simple example to show tensor shape on debugger '''
from _pydevd_bundle.pydevd_extension_api import StrPresentationProvider
from .pydevd_helpers import find_mod_attr class PyTorchTensorShapeStr: def can_provide(self, type_object, type_name): torch_tensor = find_mod_attr('torch', 'Tensor') return torch_tensor is not None and issubclass(type_object, torch_tensor) def get_str(self, val): dim = val.dim() if dim == 0: return str(val) elif dim == 1: return f'{val.shape[0]}: {val}' return f'{list(val.shape)}: {val}' import sys if not sys.platform.startswith("java"): StrPresentationProvider.register(PyTorchTensorShapeStr)
放到下,随后重启 VSCode 即可解决
~/.vscode/extensions/ms-python.debugpy-XXX/bundled/libs/debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/pydevd_plugin_pytorch_tensor_str.py
。
由于 debugpy 版本不同,路径中的 XXX 部分会不一样;如果是 VSCode Remote 环境,放到远程机器的 ~/.vscode-server/...
下的相同子目录即可。
wsl2 下是 ~/.vscode-server,如果用过了 debug 模式会自动生成 extensions文件夹,且安装好了debugpy,如"~/.vscode-server/extensions/ms-python.debugpy-2024.14.0-linux-x64"
参考自: https://www.zhihu.com/question/560178647