首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >跟随程序的执行

跟随程序的执行
EN

Stack Overflow用户
提问于 2013-12-25 01:10:25
回答 2查看 72关注 0票数 1

我希望在程序执行时“观察”它。例如,我想跟踪程序的堆栈指针,因为它在执行过程中发生变化。我一直在研究用python编写GDB脚本,但是这个问题的解决方案非常有问题--到目前为止,我还没有成功安装PythonGDB。如果任何人对如何处理这个问题有任何解决方案/建议,我将不胜感激。

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

EN

回答 2

Stack Overflow用户

发布于 2013-12-25 14:24:53

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

首先是一个测试C++程序(使用g++ -g main.cpp构建):

代码语言:javascript
复制
>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脚本:

代码语言:javascript
复制
>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"))
}

然后是测试本身:

代码语言:javascript
复制
>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
票数 1
EN

Stack Overflow用户

发布于 2013-12-25 01:15:05

ubiQ,

我一直使用IDLE进行调试。在谷歌上搜索一下。希望这能有所帮助,如果没有,请让我知道!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20764462

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档