如何查察运行程序的栈空间大小

打印 上一主题 下一主题

主题 1809|帖子 1809|积分 5429

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
近来遇到一个问题是如何看运行程序的堆栈占用大小,想到的一个办法是:利用寄存器值,rsp栈顶指针和rbp指针,获得栈空间实时大小。

步骤:


  • 设置断点
  • 表现info registers rsp栈顶指针
  • 利用bt命令表现当前堆栈
  • 根据表现的堆栈编号,使用frame $frameNo命令切换堆栈层次到堆栈的底部
  • 继续使用info registers rbp表现栈底指针
  • 利用python 做盘算器,将两次所在值相减,就得到运行堆栈的大致大小
   发起断点设置在堆栈的最深处,或某些大栈空间占用的场景
  
留意事项:


  • 此操纵步骤得当64位环境,32位环境仅是寄存器值名字的不同
  • 程序运行栈空间,不应该太满,需要有预留空间,从而引发栈溢出问题

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

tsx81428

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表