【问题标题】:How to access the variables of C++ program from gdb with Python如何使用 Python 从 gdb 访问 C++ 程序的变量
【发布时间】:2017-04-04 14:19:01
【问题描述】:

如何使用 Python 从 gdb 访问这些值?:

some_array_smartptr->operator[](0)->item // no errors are checked for sake of clarity

在 gdb 中这条线运行良好,但我不知道如何在 Python 中使用它,因为我正在实现自动化测试。

请注意,vector 和 smartptr 都不是标准的,而是手动编写的。不过语义是一样的。

【问题讨论】:

  • 您能否提供更多有关您如何访问程序的背景信息?我是通过 Review Queue 而不是 C++ 开发人员来查看这个问题的,所以我无法回答,但看起来这里还有提高清晰度的空间。
  • 目前我的测试看起来像 Python 代码,其中包含一个字符串列表行"variable_x == value",其中的元素一个一个地执行,添加了if gdb.parse_and_eval(item)then 子句。我基本上不需要任何 python 代码,它是 gdb 行的一种包装器,我想简化它。实际上,我使用 gdb 行只是因为访问值的 Python 语法不清楚,我想澄清一下(正如我在问题的第一句中所述)。

标签: python c++ debugging gdb automated-tests


【解决方案1】:

gdb.parse_and_eval() 应该完全符合您对实时进程调试的要求。

Documentation.

我想遍历一些数组等等。

parse_and_eval 返回一个gdb.Value。获得该值后,您可以使用任何 Values 方法进行进一步访问。

Example.

【讨论】:

  • 是的,这就是我目前所做的。问题是,我想遍历一些数组等等。在 parse_and_eval() 的情况下,这看起来确实是错误的方法。我错过了什么吗?
猜你喜欢
  • 1970-01-01
  • 2010-09-22
  • 2023-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多