gpt4 book ai didi

python - 程序执行后

转载 作者:太空宇宙 更新时间:2023-11-04 03:50:44 27 4
gpt4 key购买 nike

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

编辑:我应该提到,我希望记录这些值 - 最好是自动记录 - 以便之后能够查看它们。我了解 GDB 允许我单步执行程序并查看每个状态,但我想自动化此过程以便能够“观察”特定值(例如 SP)如何随时间变化。

最佳答案

这是带有调试信息的测试程序的 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

关于python - 程序执行后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20764462/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com