typetraits
V2EX  ›  C++

一个 C++程序调试问题

  •  
  •   typetraits · Dec 4, 2020 · 1883 views
    This topic created in 1991 days ago, the information mentioned may be changed or developed.
    一个 RPC 服务,用了 boost.context 实现了用户态协程,默认给每个协程分配 1M 栈大小,现在打算测试减小栈大小从而降低内存占用,减小到 128K 时程序出现随机崩溃,猜测是此时栈爆了,但是无法回溯完整的调用栈(调试器中最多回溯到 boost.context 中的 trampoline 处)。
    然后想到了 AddressSantizer,https://clang.llvm.org/docs/AddressSanitizer.html 看起来是支持栈越界检测的,但是奇怪的是该程序开启 AddressSantizer 后就不再崩溃了,现在很懵,不知道该怎么调试确定问题
    2 replies    2020-12-04 16:45:19 +08:00
    wutiantong
        1
    wutiantong  
       Dec 4, 2020
    栈爆了又不是 bug,有啥好分析的?
    128k 太小就用 256k 好啦,相比 1m 不是已经优化了 75%了么?
    typetraits
        2
    typetraits  
    OP
       Dec 4, 2020 via iPhone
    @wutiantong 就是想调试一下看看栈的使用情况,毕竟 goroutine 默认栈大小只有 8KB

    不过想了一下确实优化意义不大,数据不放在分配的这个栈上,也是直接放进堆里,该用的内存一点不会少
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   4981 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 09:46 · PVG 17:46 · LAX 02:46 · JFK 05:46
    ♥ Do have faith in what you're doing.