V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
rednose1037
V2EX  ›  C++

mac clion 调试怎么才能看到 stl 容器的值

  •  
  •   rednose1037 · 2025 年 2 月 1 日 · 3054 次点击
    这是一个创建于 366 天前的主题,其中的信息可能已经有所发展或是发生改变。

    image.png

    • mac 不维护 gdb ,不想手动配置特定版本;默认使用 libc++,我改成 libstdc++,
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libstdc++ -I/opt/homebrew/Cellar/gcc/13.2.0/include/c++/13.2.0 -I/opt/homebrew/Cellar/gcc/13.2.0/include/c++/13.2.0/aarch64-apple-darwin23.4.0")
    
    • 一大堆找不到 stl 报错,路径确认没问题,没搞来
    • 累了,。。。换 ide 就不用建议了,就想知道 mac clion 这个够吧 调试怎么才能看 stl 的值...
    第 1 条附言  ·  2025 年 2 月 5 日
    clion 2024.1 版本的 bug ,下载更新到 2024.3 解决了
    7 条回复    2025-02-05 10:29:28 +08:00
    nightwitch
        1
    nightwitch  
       2025 年 2 月 1 日
    标准库(libc++/libstdc++),编译器(gcc/clang), 调试器(gdb/lldb)混搭着使用就这样。能编过,但是调试起来体验不好。
    统一用 clang 的工具链和标准库,或者统一用 gcc ,就没这问题了
    MoYi123
        2
    MoYi123  
       2025 年 2 月 1 日
    直接用 gdb terminal print 能打印出来吗? 先确定一下是 gdb 的问题还是 clion 的.

    如果确定是 clion 的问题, 可以找 jetbrains 的人帮你,
    我之前也遇到过 clion 里的 gdb 有错误, 但是 gdb print 是好的, 后来删了一个 tmp 下的缓存文件就好了.
    https://youtrack.jetbrains.com/issue/CPP-41050/Debugging-with-GDB-in-remote-toolchains-is-broken-by-CLion-update
    rednose1037
        3
    rednose1037  
    OP
       2025 年 2 月 2 日
    @MoYi123 #2 mac 用不了 gdb ,是 lldb 🥲
    nightwitch
        4
    nightwitch  
       2025 年 2 月 2 日
    brew 装一个就有了吧
    rednose1037
        6
    rednose1037  
    OP
       2025 年 2 月 2 日
    @nightwitch #4
    ```
    jialage@jialagedeMacBook-Pro ~ % brew install gdb
    ==> Downloading https://formulae.brew.sh/api/formula.jws.json
    ==> Downloading https://formulae.brew.sh/api/cask.jws.json
    gdb: The x86_64 architecture is required for this software.
    Error: gdb: An unsatisfied requirement failed this build.
    ```
    MoYi123
        7
    MoYi123  
       2025 年 2 月 5 日
    lldb 和 gdb 和确定是不是 clion 的错误也没什么关系啊,
    (lldb) print a
    (std::unordered_map<int, std::vector<int> >) size=1 {
    [0] = {
    __cc_ = {
    first = 1
    second = size=3 {
    [0] = 1
    [1] = 2
    [2] = 3
    }
    }
    }
    }

    如果 lldb 能这样成功打印, 那肯定是 clion 的错误了, 直接找 jetbrains 就行了.
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   2175 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 15:06 · PVG 23:06 · LAX 07:06 · JFK 10:06
    ♥ Do have faith in what you're doing.