访问Python的对象核心转储
-
22-08-2019 - |
题
反正有从在gdb核心文件
发现一个的PyObject *的值蟒解决方案
这是大量的工作,但当然是可以做到的,特别是如果你把所有的符号。看看为Python(以及编译选项中使用来构建它)的特定版本的头文件:他们定义的PyObject的结构,其中包括,首先,一个指针类型。宏的大量使用,所以你可能需要再次运行来源了Python的编译,用完全相同的标志,但在另外一个-E预处理后停下来,所以你可以参考具体的C代码进行的位你看到在核心转储。
A型对象有,在许多其他事情,一个字符串(字符数组)这是它的名字,并从它可以推断究竟该类型的对象包含 - 是它的内容直接,或者一些内容(例如作为一个长度,即数项)和一个指向实际的数据。
我已经做了这样的超先进的验尸调试几次(从所涉及的Python版本,所有的准备预处理源&C的非常精确的知识),每次和我花了两天(分别为我仍然是一个自由职业者和按小时收费的,如果我有投标这样的任务,我会说至少20小时 - 我不便宜的每小时收费 - !)
督察,这是值得的,只有当它真的真的了一些非常昂贵的泡菜的唯一途径。从积极的一面,它会教你更多关于Python的内部比你想过在那里,即使是记忆的来源每行之后。祝你好运,你需要一些!
不隶属于 StackOverflow