V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
rednose1037
V2EX  ›  C++

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

  •  
  •   rednose1037 · Feb 1, 2025 · 3262 views
    This topic created in 457 days ago, the information mentioned may be changed or developed.

    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 的值...
    Supplement 1  ·  Feb 5, 2025
    clion 2024.1 版本的 bug ,下载更新到 2024.3 解决了
    7 replies    2025-02-05 10:29:28 +08:00
    nightwitch
        1
    nightwitch  
       Feb 1, 2025
    标准库(libc++/libstdc++),编译器(gcc/clang), 调试器(gdb/lldb)混搭着使用就这样。能编过,但是调试起来体验不好。
    统一用 clang 的工具链和标准库,或者统一用 gcc ,就没这问题了
    MoYi123
        2
    MoYi123  
       Feb 1, 2025
    直接用 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
       Feb 2, 2025
    @MoYi123 #2 mac 用不了 gdb ,是 lldb 🥲
    nightwitch
        4
    nightwitch  
       Feb 2, 2025
    brew 装一个就有了吧
    rednose1037
        6
    rednose1037  
    OP
       Feb 2, 2025
    @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  
       Feb 5, 2025
    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 就行了.
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1214 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 17:11 · PVG 01:11 · LAX 10:11 · JFK 13:11
    ♥ Do have faith in what you're doing.