首页 > 解决方案 > 如何在 Linux 运行时检查堆栈使用情况?

问题描述

  1. Linux 上是否有任何工具可以在运行时检查堆栈使用/大小?我知道我们可以通过编码来做到这一点,但我宁愿使用工具而不是代码。
  2. GDB可以用来附加特定的进程,bt命令可以显示堆栈帧。值=(第n帧的地址-第1帧的地址)可以被认为是堆栈大小的近似数字吗?

标签: c++linuxstack

解决方案


您可以使用sysconf()子程序在运行时获取堆栈 usgae。从手册页sysconf()

sysconf - 在运行时获取配置信息

long sysconf(int name);

在编译时,这是通过包含和/或测试某些宏的值来完成的。在运行时,可以使用当前函数 sysconf() 请求数值。

使用手册页中指定的各种宏_SC_THREAD_ATTR_STACKADDR,如._SC_THREAD_STACK_MINsysconf()


推荐阅读