问题标签 [gdb-python]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
498 浏览

python - (gdb)gdb python脚本中的p/x等价物?

主要结构是

当我在做

(gdb) p ((struct my_struct *)dev_base->next->priv)

输出是这样的

当我使用 p/x 进行操作时:

(gdb) p/x ((struct my_struct *)dev_base->next->priv)

输出是这样的

在 gdb-python 中:

python val = gdb.parse_and_eval('((struct my_struct *)dev_base->next->priv)')

python print val

输出是:

那么如何在 gdb-python 中写等价于 p/x 呢?或者如何在 python 脚本中获取'md_capture_buff'的地址,而不是打印python val = gdb.parse_and_eval('((struct my_struct *)dev_base->next->priv)').address地址?

0 投票
4 回答
1462 浏览

python - gdb python中的container_of宏

我正在尝试访问内核链表,结构是

};

使用 gdb,我可以通过以下方式打印:

(gdb)p *(qlcnic_wait_event_t *)(((struct my_struct *)dev_base->next->priv).wait_list)

输出是:

}

要迭代列表,我需要转到“下一个”wait_list并使用“container_of”,获取地址。所以我正在使用 container_of 宏,代码是

做完之后(gdb) source container_of.py

输出是:

为什么它不起作用?如何实现这个 container_of ?

0 投票
1 回答
1932 浏览

gdb - gdb python:遍历结构数组

我们不能遍历结构数组吗?我的意思是通过检查结构的内容并相应地打印每个字段来检查每个索引?正如我们可以为这样的结构做的

如何获得对数组每个索引处元素的访问控制?

0 投票
1 回答
2232 浏览

python - gdb python:如何对 gdb.value 进行算术运算?

为什么我在做算术运算时得到错误的答案:

而输出应该是0x410027a00728. 我检查了地址的类型和偏移量

我也试过这个

有没有其他方法可以做到这一点?

0 投票
1 回答
342 浏览

python - gdb-python:为什么下面的代码在 gdb 下不起作用?

下面的代码作为 python 代码工作正常(没有 gdb 模块),但它在 gdb 中不起作用?

错误是:

file.txt 是:

似乎withas关键字有问题。

0 投票
1 回答
424 浏览

gdb-python - Gdb Pretty Printer: *(char*){hex_address} 在 python 中等效

我有以下格式的 C++ 类(仅复制重要部分):

对于这个 my_string 类,我添加了漂亮的打印机。我在 python 脚本中添加了以下 defs(我将其包含在我的 .gdbinit 文件中) - 只是在这里复制了 func defs:

但是,在使用时我收到以下错误 -

如果我尝试将 'ptr' 中的值更改为 int ,然后在转换回 char 之前进行算术运算(如上面的 def ),它会给出以下错误:

谁能告诉我我做错了什么?我真的很震惊这里。:(。简而言之,我正在尝试实现以下 c/c++ expr 等效项,

在蟒蛇。我该怎么做?

0 投票
1 回答
1011 浏览

python - 如何在 python 代码中识别特定的 GDB 断点?

我正在尝试用 python 编写 GDB 脚本。我有一个 GDB 的本机脚本文件,它提供了一个 python 脚本文件。在 .gdb 文件中,我在不同的函数上声明了一些断点。我可以使用 python 脚本在这些断点上执行下一步/步骤/继续并打印不同的变量。但是对于每个带有特定打印的断点,我都有一个独特的 python 函数。我想让它变得更好、更通用。

我想要的是在 python 代码中有一个函数和一种方法来识别命中哪个断点,以便我可以根据断点打印不同的变量。如果我只是打印它们,那么我将得到超出范围的错误。

我已经检查过,GDB 还允许通过在 python 代码中定义断点来处理 python 中的断点,如此所述。

是否有另一种方法来完成这项任务(将断点定义保留在 python 代码之外)或者是使用 gdb Breakpoint 类的唯一方法?我想要的只是一个检查,它可以帮助确定它是哪个断点。

谢谢

0 投票
1 回答
158 浏览

gdb-python - 如何使用 python 逐行执行代码并检查堆栈

我正在尝试在 gdb 中设置一个 python 脚本,该脚本一次单步执行一个程序,并在每一步记录堆栈指针。我一直在寻找一些关于 gdb-python 脚本的优秀在线参考资料,但找不到任何有价值的参考资料。

脚本示例或指向 gdb-python 脚本的良好在线参考的链接将不胜感激。

0 投票
3 回答
1619 浏览

python - gdb python api:是否可以调用类/结构方法

在 Python 中,我有一个对应于 C++ 结构var的类型变量。gdb.Value

该结构有一个方法void foo()

我可以评估这个表达式var['foo']。但var['foo']\()会抱怨说

在我的情况下,我相信值类型将是gdb.TYPE_CODE_METHOD(不确定,但var['foo'].type.code返回16)。

所以我想问题是:

python API 是否支持对类方法的调用,如果不支持,是否有解决方法?

谢谢!

0 投票
1 回答
530 浏览

gdb - 用于有界指令跟踪的 GDB python 脚本

我正在尝试编写一个 GDB 脚本以有界的方式进行指令跟踪(即启动 addr 和停止 addr)。也许我在谷歌上失败了,但我似乎已经找不到这个存在了。

这是我的尝试:

在我看来,这应该设置一个断点,然后将命令设置为在命中时运行。当断点命中时,它应该单步执行代码,直到命中结束地址,然后它将关闭日志记录。

当我使用 gdb 运行它时,应用程序将在正确的位置中断,但没有运行任何命令。

我究竟做错了什么?抱歉,如果这是错误的处理方式,请告诉我。我是 gdb 脚本的新手