GDB 以可读格式打印变量(使用 << 运算符)
GDB print variable in readable format (using << operator)
GDB 是一个很好的工具,但就我目前使用它的方式而言,一旦处理更复杂的数据结构,它就会变得毫无用处,因为只需对它们使用 print
就可以了整个屏幕都有关于 class.
的不可读细节
然而,我通常为我的 class 定义一个自定义 operator<<
,目的是为我的 class.[=16 创建一个(或多或少)可读的字符串表示形式=]
因此,如果 GDB 始终使用它(如果可用)而不是其默认打印行为,我会更喜欢。
我找到了 2010 年的 this question,它描述了如何手动调用 operator<<
。除了做起来有点乏味之外,我还没有让这些对我有用(我总是得到 No symbol "operator<<" in current context.
)。
然而,在我看来,似乎必须有一种更方便的方法让 GDB 以可读格式打印变量。毕竟我不是第一个遇到这种情况的人。
因此我的问题是:如何让 GDB 以可读格式打印变量(最好使用在相应类型中实现的 operator<<
)?
我发现的链接问题是从 2010 年开始的,所以我希望从那以后情况有所改善。
it appears to me as if there must be a more convenient way of getting GDB to print variables in a readable format.
是的:你为他们实现了一个 python 漂亮的打印机。 Documentation.
I would like to avoid having to rewrite a pretty-printer for all my classes when I already have done that in code.
call PrintMyClass()
解决方案的问题在于它们 需要 一个运行 过程。当你有一个 core
转储时,你不能在你的代码中调用任何函数,所以你需要在你的程序 之外 一些东西来漂亮地打印数据。
如果您从不调试 core
转储,显然不是问题,但迟早您可能不得不这样做,然后无论如何您都需要复制代码。
GDB 是一个很好的工具,但就我目前使用它的方式而言,一旦处理更复杂的数据结构,它就会变得毫无用处,因为只需对它们使用 print
就可以了整个屏幕都有关于 class.
然而,我通常为我的 class 定义一个自定义 operator<<
,目的是为我的 class.[=16 创建一个(或多或少)可读的字符串表示形式=]
因此,如果 GDB 始终使用它(如果可用)而不是其默认打印行为,我会更喜欢。
我找到了 2010 年的 this question,它描述了如何手动调用 operator<<
。除了做起来有点乏味之外,我还没有让这些对我有用(我总是得到 No symbol "operator<<" in current context.
)。
然而,在我看来,似乎必须有一种更方便的方法让 GDB 以可读格式打印变量。毕竟我不是第一个遇到这种情况的人。
因此我的问题是:如何让 GDB 以可读格式打印变量(最好使用在相应类型中实现的 operator<<
)?
我发现的链接问题是从 2010 年开始的,所以我希望从那以后情况有所改善。
it appears to me as if there must be a more convenient way of getting GDB to print variables in a readable format.
是的:你为他们实现了一个 python 漂亮的打印机。 Documentation.
I would like to avoid having to rewrite a pretty-printer for all my classes when I already have done that in code.
call PrintMyClass()
解决方案的问题在于它们 需要 一个运行 过程。当你有一个 core
转储时,你不能在你的代码中调用任何函数,所以你需要在你的程序 之外 一些东西来漂亮地打印数据。
如果您从不调试 core
转储,显然不是问题,但迟早您可能不得不这样做,然后无论如何您都需要复制代码。