zoukankan      html  css  js  c++  java
  • 线程栈溢出

    gdb跟踪进程时,可以用 info frame查看当前栈桢信息,可以用 frame 、up、down 改变当前栈桢
    (gdb) info frame
    Stack level 0, frame at 0x9fffffffbf6af1c0:  ==>当前栈地址
     ip = 0xc0000000003db5f0:0 in __doprnt_main; saved ip 0xc0000000003d5990:0 ==》代码段地址
     called by frame at 0x9fffffffbf6af1c0       ==》调用它的栈地址
     Size of frame is 96, Size of locals is 88, Size of rotating is 2.
     NAT collections saved at 0x9fffffffbf6915f8 0x9fffffffbf6917f8.
     Arglist at 0x9fffffffbf6914f8, args:  ==》main函数参数列表地址
     Locals at 0x9fffffffbf6914f8, Previous frame's sp is 0x9fffffffbf6af1c0
    在GDB时,有个变量SP,标识当前栈的地址,所以可以使用如下方法,得到整个调用上下文栈的大小
    (gdb) frame 0
    (gdb) set $sp_save = $sp
    (gdb) # the frame # of main or __pthread_bound_body
    (gdb) frame 13
    (gdb) p $sp - $sp_save
    可以通过以下环境变量改变线程栈默认大小:
    export PTHREAD_DEFAULT_STACK_SIZE =  (HP-UX)
    AIXTHREAD_STKSIZE (AIX)
  • 相关阅读:
    Kafka集群搭建
    Easyui dialog中嵌入iframe
    图表插件Charts.js的使用
    抽象工厂
    工厂方法
    简单工厂模式
    认识Git
    代理模式
    原型设计Axure的基本使用
    MVC Api 的跨项目路由
  • 原文地址:https://www.cnblogs.com/hbt19860104/p/2627138.html
Copyright © 2011-2022 走看看