c++ - 如何在 Linux 运行时检查堆栈使用情况?
问题描述
- Linux 上是否有任何工具可以在运行时检查堆栈使用/大小?我知道我们可以通过编码来做到这一点,但我宁愿使用工具而不是代码。
- GDB可以用来附加特定的进程,
bt
命令可以显示堆栈帧。值=(第n帧的地址-第1帧的地址)可以被认为是堆栈大小的近似数字吗?
解决方案
您可以使用sysconf()
子程序在运行时获取堆栈 usgae。从手册页sysconf()
sysconf - 在运行时获取配置信息
long sysconf(int name);
在编译时,这是通过包含和/或测试某些宏的值来完成的。在运行时,可以使用当前函数 sysconf() 请求数值。
使用手册页中指定的各种宏_SC_THREAD_ATTR_STACKADDR
,如._SC_THREAD_STACK_MIN
sysconf()
推荐阅读
- spring-boot - Spring boot - 服务器无法识别 HTTP Header SOAPAction 的值
- html - 如何显示谷歌验证码?
- javascript - 如何将电子升级到最新版本?
- python - 无法使用相同的 AES 对象两次解密给定的密文
- amazon-mws - 亚马逊是否更改了获取 MWS 访问密钥的政策?
- jquery - jQuery - 根据屏幕大小选择显示哪个视图的问题
- java - 如何修复“找不到符号 - 方法 java.lang.String
- javascript - 遍历路径以到达不同目录中的资源
- r - 在退出时访问函数的状态(停止)
- python - 使用'for'循环将字典添加到字典中