2024-05-28 23:50:14 发布
网友
我在看一个程序执行的过程。例如,我想跟踪程序在执行过程中发生变化时的堆栈指针。我一直在研究用python编写GDB脚本,但是解决这个问题的方法非常麻烦——到目前为止,我在安装PythonGDB时还没有成功。如果有人对如何处理这个问题有任何解决方案/建议,我将非常感激。你知道吗
编辑:我应该提到,我正在寻找记录这些值-理想情况下自动-以便能够审查他们之后。我知道GDB允许我一步一步地浏览程序并查看每个状态,但我想自动化这个过程,以便能够“观察”特定值(如SP)如何随时间变化。你知道吗
这是带有调试信息的测试程序的SystemTap解决方案:
第一个测试C++程序(用g++g构建)主.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
ubiQ公司
我总是用空闲来调试。用谷歌搜索一下。希望这有帮助,如果没有,让我知道!你知道吗
这是带有调试信息的测试程序的SystemTap解决方案:
第一个测试C++程序(用g++g构建)主.cpp)地址:
然后是SystemTap脚本:
然后是测试本身:
ubiQ公司
我总是用空闲来调试。用谷歌搜索一下。希望这有帮助,如果没有,让我知道!你知道吗
相关问题 更多 >
编程相关推荐