有没有办法从Python中获取Python代码块的整个C堆栈跟踪?

有没有办法从Python中获取Python代码块的整个C堆栈跟踪?,python,c++,gdb,pdb,Python,C++,Gdb,Pdb,在用cpython编写一个相当大和复杂的代码库时,我试图弄清楚确切的控制流和函数调用,以便更好地指导我。感觉使用pdb()应该很容易做到这一点,但我似乎无法理解。使用bp.set_trace()只能显示在执行期间调用的Python文件。这就是写作的方式吗?由于使用了函数调用的一个公平的代码位和动态调度,所以不能精确地找到从Python代码调用的函数的C++方法定义。 看起来这应该很简单,但大多数线程并没有将重点放在这一点上,而是放在代码流序列上 我想知道pdb.pm()是否能满足我的需要,但除非

在用cpython编写一个相当大和复杂的代码库时,我试图弄清楚确切的控制流和函数调用,以便更好地指导我。感觉使用pdb()应该很容易做到这一点,但我似乎无法理解。使用bp.set_trace()只能显示在执行期间调用的Python文件。这就是写作的方式吗?由于使用了函数调用的一个公平的代码位和动态调度,所以不能精确地找到从Python代码调用的函数的C++方法定义。 看起来这应该很简单,但大多数线程并没有将重点放在这一点上,而是放在代码流序列上


我想知道pdb.pm()是否能满足我的需要,但除非发生异常,否则它无法正常工作。

您不能正常使用gdb吗?看到了吗?我从未尝试过这个,但我想您可能会在其中找到您想要的。谷歌为Python制作了一个新版本,它将生成一个Callgrind配置文件,这可能会有所帮助。你可以和我一起使用。