【发布时间】:2015-06-13 17:15:15
【问题描述】:
我正在使用
- Netbeans C++ 8.0.2
- clang++(Ubuntu clang 版本 3.6.0-2ubuntu1 (tags/RELEASE_360/final)(基于 LLVM 3.6.0))
- gdb (GNU gdb (Ubuntu 7.9-1ubuntu1) 7.9)
在我的“C++ 简单测试”中,每当我检查一个 shared_ptr 变量时,我看到的所有值都是:
std::shared_ptr (count 1, weak 0) 0x64d3a0
或类似的。没有办法深入了解它实际指向的值。即使变量窗口中的树视图显示了一个扩展器图标,当我单击它时它也会消失。当我尝试取消引用它或在“表达式”窗口中调用它的 get() 函数时,我收到一条错误消息:
找不到操作员*。
和
无法评估函数——可能被内联
分别。
如果我在实际程序中创建对值的引用,它不仅允许我向下钻取引用,而且 shared_ptr 也可以向下钻取(这对我来说似乎很可疑)。我尝试了-g3 和-ggdb,但没有任何区别。
是否有标准库的调试版本(libcxx 是默认的吗?),或者某个地方的设置可能会改善这种情况?或者也许是一种在变量窗口中列出私有成员/原始视图的方法,这样我就可以自己取消引用底层指针?
【问题讨论】:
-
在 gdb 中: print *0x64d3a0 应该可以完成这项工作。
-
做
*(base_grammar *)0x64d3a0似乎是一个工作,虽然不是很方便的工作。
标签: c++ debugging gdb clang netbeans-8