【发布时间】:2019-04-20 06:50:38
【问题描述】:
当我通过在断点处停止来调试程序时,队列和堆栈显示为 size=0 而不是,但其他变量(如向量)工作正常。
MacOS 10.14.1 Mojave Cmake 3.12.3 Xcode C++ 编译器 LLDB 6.0 调试模式
【问题讨论】:
-
问题是:调试器如何计算大小?
std::queue和std::stack都是接受另一个容器作为模板参数的模板。也许调试器无法与这个星座相处。您可能会尝试更深入地挖掘,检查内部std::deque的单个成员(默认容器,如果未提供)。比调试器显示的内容更重要的是容器的行为方式。尝试将st.size()分配给某个变量以查看... -
有趣的问题。将来,请发布您的源代码,而不是依赖图像。这允许其他人将您的代码复制并粘贴到他们的 IDE 中。
-
我看到您在 Mac OS X 上运行。我得到与您使用 Mac OS X 和 CLion 相同的输出。我怀疑您的环境正在使用 XCode 和 CLang。您能否使用真正的 gcc/gdb 设置在 Linux 上使用 CLion 进行尝试。我希望这更多的是编译器和调试器的问题,而不是 CLion 本身。 CLang 的调试器可能会以不同于 gdb 的方式转储对象。正如@Aconcagua 所说,分配
st.size()正确显示了队列的大小。 -
Xcode+lldb 中也会出现这个错误,没有 CLion/Jetbrains reqd :( 所以仍然没有修复 :(
标签: c++ xcode macos clion lldb