【问题标题】:How does GDB pretty printer know the output format the user is requesting?GDB 漂亮的打印机如何知道用户请求的输出格式?
【发布时间】:2022-06-22 07:40:58
【问题描述】:

我有一些由第三方特定领域工具生成的复杂类。这些类很复杂,因为该工具试图尽可能地通用,所以我被要求设计一个 GDB 漂亮的打印机 python 脚本来改善调试体验。

我通过“to_string”API 设计了它,它可以用有组织的富文本(例如颜色)打印信息,到目前为止一切正常。

但是,我不知道如何获取用户请求的输出格式,无论用户使用“p”还是“p/x”都会输出相同的字符串,因为我的脚本不知道用户想要十六进制而不是十进制。

我尝试了谷歌搜索,但没有找到一个优雅的方法。我确实有一些变通办法,但都改变了用法(例如实现两台打印机切换),请给我一些建议,谢谢。

【问题讨论】:

  • 我认为不可能得到当前打印命令的输出格式。通常你会使用children API 作为值,打印命令会自动为它们使用选择的打印格式。如果这不可能,您可以为此创建一个新的parameter,您可以在漂亮的打印机中使用gdb.parameter 进行查询。
  • 谢谢@ssbssa,看来我还是需要更改用法。

标签: gdb gdb-python


【解决方案1】:

刚刚意识到已经向 GDB 提出了功能请求。

Bug 17291 - IWBN if the print format was available to pretty-printers.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-26
    • 1970-01-01
    相关资源
    最近更新 更多