我如何在框架中找到ARGC的地址

How do I find the address of argc in the frame?

本文关键字:ARGC 地址 框架      更新时间:2023-10-16

我正在尝试在C 程序中跟踪Segfault。我注意到在Segfault时,ARGC已被修改为非常大的数量。该号码恰好是我应用程序地址空间中的一个地址。这使我相信有些东西正在破坏我的主要堆栈框架。问题是,我如何在堆栈上获得指向ARGC的堆栈地址,以便我可以分辨出哪种方法正在修改程序中的参数?我想逐步浏览该程序,并观察该解决方案以进行更改。这种segfault正在HPUX和AIX上发生(现在我正在看HPUX)。我一直在浏览堆栈,但是找不到将ARGC变量推到堆栈的任何地方。我正在使用GDB进行调试。

有人知道ARGC将在HPUX PA-RISC机器的堆栈框架上存储在哪里?

显然是寄存器中的hpux pa-risc商店argc,而不是在内存中(当我做p& argc时,gdb告诉我)。ARGC之所以更改,是因为HPUX PA-RISC重新分配了寄存器,因为它没有使用。在Linux上,ARGC存储在堆栈中。