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),与系统所给的参数基本相符

  • 相关阅读:
    polya定理
    树状数组
    离散数学通路数的矩阵计算法
    高次同余方程求解
    Uva1378
    poj2888
    poj2409&&poj1286
    poj2182
    poj2154
    判断一个字符是否为汉字
  • 原文地址:https://www.cnblogs.com/qbits/p/10730523.html
Copyright © 2011-2022 走看看