【问题标题】:How to add custom Visual Studio debug view of Python object?如何添加 Python 对象的自定义 Visual Studio 调试视图?
【发布时间】:2018-01-06 14:08:42
【问题描述】:

我想在 Visual Studio 2015(Python 工具)中调试期间添加 Python openpyxl ReadOnlyCell 对象的有用可视化。我读到了natvis files,但它们似乎只适用于 C++ 项目。例如,下面的屏幕截图显示了 ReadOnlyCell 在 Autos 窗口中的外观。我想在列中显示 value 属性(例如下面的单元格 0 为 6000),而不必单独导航到每个单元格。

似乎有一种方法可以通过编辑 PythonDkm.natvis file 添加 Python 对象可视化。我找到了该文件,但我不明白如何向其中添加自定义类。任何帮助将不胜感激!

【问题讨论】:

  • 我没有找到支持python的资料,但是我会和其他成员讨论,如果我有任何资料,我会在这里分享。

标签: python visual-studio debugging visual-studio-debugging natvis


【解决方案1】:

您应该在 ReadOnlyCell 类上定义 __repr__。这是首先显示的内容,然后您可以展开查看其余的值。

例如:

class ReadOnlyCell:
    ...
    def __repr__(self):
        return f"{type(self).__name__}(value={self.value})"

将显示为:

Name     Value                           Type
[0]      ReadOnlyCell(value=6000)        ReadOnlyCell

另外:PythonDkm.natvis 文件用于混合 Python/C 调试。它包含用于查看原始 Python 对象的 natvis 定义,并且对常规 Python 调试没有影响。

【讨论】:

  • 相反,__repr__ 仅用于 Python 调试器 - 如果使用混合原生/Python 调试,它会为它知道的那些类型提供自己的 repr,以及硬编码的通用表示(类型名称+ 地址)用于其他所有内容。
  • 完美运行,谢谢 Zooba。对于那些寻找确切步骤的人:删除<python>\Lib\site-packages\openpyxl 中的缓存文件,编辑<python>\Lib\site-packages\openpyxl\cell\read_only.py 以包含__repr__ 函数(我刚刚使用return str(self.value))。直接编辑使用pip 安装的库可能不是最佳实践,但快速表示单元格确实很有帮助。
猜你喜欢
  • 2022-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-30
  • 1970-01-01
  • 1970-01-01
  • 2023-03-18
  • 1970-01-01
相关资源
最近更新 更多