我希望在程序执行时“观察”它。例如,我想跟踪程序的堆栈指针,因为它在执行过程中发生变化。我一直在研究用python编写GDB脚本,但是这个问题的解决方案非常有问题--到目前为止,我还没有成功安装PythonGDB。如果任何人对如何处理这个问题有任何解决方案/建议,我将不胜感激。
编辑:我应该提到的是,我希望记录这些值-理想情况下是自动记录-以便能够在事后查看它们。我知道GDB允许我遍历程序并查看每个状态,但我想自动化这个过程,以便能够“观察”某个特定值(如SP)如何随时间变化。
发布于 2013-12-25 14:24:53
这是一个带有调试信息的测试程序的SystemTap解决方案:
首先是一个测试C++程序(使用g++ -g main.cpp构建):
>cat main.cpp
void a()
{
char arr[12800];
}
void b()
{
char arr[1280];
a();
}
void c()
{
char arr[128];
b();
}
int main()
{
char arr[12];
c();
return 0;
}然后是一个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发布于 2013-12-25 01:15:05
ubiQ,
我一直使用IDLE进行调试。在谷歌上搜索一下。希望这能有所帮助,如果没有,请让我知道!
https://stackoverflow.com/questions/20764462
复制相似问题