关于c ++:如何在框架中找到argc的地址?

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

我试图在C ++程序中查找段错误。 我注意到segfault时argc已被修改为很多。 该数字恰好是我应用程序地址空间中的一个地址。 这使我相信某些东西正在破坏我的主堆栈框架。 问题是,如何获得指向argc的堆栈上的地址,以便我可以知道哪种方法正在修改程序中的参数? 我想单步执行程序,并观察该地址空间的变化。
此段错误发生在hpux和aix上(现在我正在查看hpux)。 我一直在浏览堆栈,但是找不到将argc变量压入堆栈的任何位置。
我正在使用gdb进行调试。

有人知道argux风险计算机的堆栈框架中将argc存储在何处吗?


显然,hpux pa-risc将argc存储在寄存器中,而不是存储在内存中(当我执行p&argc时,gdb会通知我)。 argc只是因为hpux pa-risc未使用而重新分配了该寄存器,所以才进行了更改。 在linux上,argc存储在堆栈中。