rednose1037
V2EX  ›  C++

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

  •  
  •   rednose1037 · Feb 1, 2025 · 4092 views
    This topic created in 650 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
    nightwitch
    Feb 1, 2025
    1
    标准库(libc++/libstdc++),编译器(gcc/clang), 调试器(gdb/lldb)混搭着使用就这样。能编过,但是调试起来体验不好。
    统一用 clang 的工具链和标准库,或者统一用 gcc ,就没这问题了
    MoYi123
    MoYi123
    Feb 1, 2025
    2
    直接用 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
    rednose1037
    OP
    Feb 2, 2025
    3
    @MoYi123 #2 mac 用不了 gdb ,是 lldb 🥲
    nightwitch
    nightwitch
    Feb 2, 2025
    4
    brew 装一个就有了吧
    rednose1037
    rednose1037
    OP
    Feb 2, 2025
    6
    @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
    MoYi123
    Feb 5, 2025
    7
    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   ·   Privacy   ·   Solana   ·   2142 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 42ms · UTC 13:57 · PVG 21:57 · LAX 05:57 · JFK 08:57
    ♥ Do have faith in what you're doing.