首页
注册
登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请
登录
V2EX
›
C++
一个 C++程序调试问题
typetraits
·
2020-12-04 16:07:39 +08:00
· 1394 次点击
这是一个创建于 1393 天前的主题,其中的信息可能已经有所发展或是发生改变。
一个 RPC 服务,用了 boost.context 实现了用户态协程,默认给每个协程分配 1M 栈大小,现在打算测试减小栈大小从而降低内存占用,减小到 128K 时程序出现随机崩溃,猜测是此时栈爆了,但是无法回溯完整的调用栈(调试器中最多回溯到 boost.context 中的 trampoline 处)。
然后想到了 AddressSantizer,
https://clang.llvm.org/docs/AddressSanitizer.html
看起来是支持栈越界检测的,但是奇怪的是该程序开启 AddressSantizer 后就不再崩溃了,现在很懵,不知道该怎么调试确定问题
协程
nte
回溯
调试
2 条回复
•
2020-12-04 16:45:19 +08:00
1
wutiantong
2020-12-04 16:29:41 +08:00
栈爆了又不是 bug,有啥好分析的?
128k 太小就用 256k 好啦,相比 1m 不是已经优化了 75%了么?
2
typetraits
OP
2020-12-04 16:45:19 +08:00 via iPhone
@
wutiantong
就是想调试一下看看栈的使用情况,毕竟 goroutine 默认栈大小只有 8KB
不过想了一下确实优化意义不大,数据不放在分配的这个栈上,也是直接放进堆里,该用的内存一点不会少
关于
·
帮助文档
·
博客
·
API
·
FAQ
·
实用小工具
·
2591 人在线
最高记录 6679
·
Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 24ms ·
UTC 02:15
·
PVG 10:15
·
LAX 19:15
·
JFK 22:15
Developed with
CodeLauncher
♥ Do have faith in what you're doing.