Python 遵循一个程序';行刑

Python 遵循一个程序';行刑,python,c,debugging,gdb,Python,C,Debugging,Gdb,我希望在程序执行时“观看”它。例如,我想跟踪程序在执行过程中的堆栈指针变化。我一直在考虑用python编写GDB脚本,但解决方案非常有缺陷——到目前为止,我在安装PythonGDB方面还没有成功。如果有人对如何处理这个问题有任何解决方案/建议,我将非常感谢 编辑:我应该提到,我希望记录这些值——理想情况下是自动记录的——以便能够在事后查看它们。我知道GDB允许我逐步完成程序并查看每个状态,但我希望自动化此过程,以便能够“观察”特定值(如SP)如何随时间变化。ubiQ 我总是使用空闲进行调试。用谷

我希望在程序执行时“观看”它。例如,我想跟踪程序在执行过程中的堆栈指针变化。我一直在考虑用python编写GDB脚本,但解决方案非常有缺陷——到目前为止,我在安装PythonGDB方面还没有成功。如果有人对如何处理这个问题有任何解决方案/建议,我将非常感谢

编辑:我应该提到,我希望记录这些值——理想情况下是自动记录的——以便能够在事后查看它们。我知道GDB允许我逐步完成程序并查看每个状态,但我希望自动化此过程,以便能够“观察”特定值(如SP)如何随时间变化。

ubiQ


我总是使用空闲进行调试。用谷歌搜索一下。希望这有帮助,如果没有,让我知道

这是一个针对带有调试信息的测试程序的SystemTap解决方案:

首先是测试C++程序(用g++-g.cop.cp构建):

然后是SystemTap脚本:

>cat measure_f.stp
probe process("a.out").function("*")
{
  printf("%-10s: rbp:%x, rsp:%x, %d\n", probefunc(), register("rbp"), register("rsp"), register("rbp") - register("rsp"))
}
然后测试本身:

>sudo stap measure_f.stp -c ./a.out
main      : rbp:7fffd3707a10, rsp:7fffd3707a00, 16
c         : rbp:7fffd37079f0, rsp:7fffd3707970, 128
b         : rbp:7fffd3707960, rsp:7fffd3707460, 1280
a         : rbp:7fffd3707450, rsp:7fffd37042c8, 12680

您好,我已经更新了我的原始帖子以反映这一点,但我所追求的是在程序执行时自动记录特定值(如SP)的能力,这将允许我查看这些值的状态如何随时间变化。IDLE有这样的功能吗?我相信,在任何时候,它都会给出程序中所有if变量及其值的列表。希望这有帮助!你可能会发现这很有趣。虽然我认为它只适用于可以放入文本框的程序。
>sudo stap measure_f.stp -c ./a.out
main      : rbp:7fffd3707a10, rsp:7fffd3707a00, 16
c         : rbp:7fffd37079f0, rsp:7fffd3707970, 128
b         : rbp:7fffd3707960, rsp:7fffd3707460, 1280
a         : rbp:7fffd3707450, rsp:7fffd37042c8, 12680