zoukankan      html  css  js  c++  java
  • 检验进程地址空间中栈的大小

    目的:

    • 学习objdump,gdb调试
    • 检验进程地址空间中进程栈的大小

    首先我们通过ulimit -a查看进程栈的大小

    得知栈的大小是8192kb

    那么实际情况栈的大小也是如此吗?
    为了确认栈的大小,我们使用无限递归的方式使得栈溢出,用栈顶减去调用main函数时栈顶的位置,即可获得栈的大小

    void* ptr;
    
    void blow_stack() {
        blow_stack();
    } 
    int main() {
        asm("mov %%rsp, %0
    ": "=r"(ptr));
       
        blow_stack();
        return 0;
    }
    

    编译完后使用objdump -S ./a.out 查看汇编源码中的main函数

    main函数首先将栈基址寄存器rbp压栈,然后讲rbp赋值为栈顶寄存器rsp
    使用gdb调试gdb ./a.out

    约等于8196kb(8M),与系统所给的参数基本相符

  • 相关阅读:
    url参数的获取
    ajax变量作用域的问题
    滚动条自适应宽度的问题
    js发送验证码(倒计时)
    字符串
    值类型和引用类型
    面向对象
    进程
    UI事件
    鼠标跟随
  • 原文地址:https://www.cnblogs.com/qbits/p/10730523.html
Copyright © 2011-2022 走看看