【问题标题】:The value of strings doesn't appear in eclipse mars CDTeclipse mars CDT中没有出现字符串的值
【发布时间】:2016-04-22 14:09:44
【问题描述】:

为什么Eclipse Mars CDT 中strings 的值没有出现在表达式或variables 窗口中? 它显示为{...},但我想在值选项卡下查看值本身。

我该怎么做?

【问题讨论】:

标签: eclipse eclipse-cdt eclipse-mars


【解决方案1】:

这里发生的是 CDT 显示 GDB 提供给它的信息。

对于一个简单的程序,调试器停止在返回 0 的行上;

#include <string>
using namespace std;

int main() {
    string mystring = "my string here";
    return 0;
}

这是我在 CDT 变量视图中看到的:

与我在 GDB 中看到的相符:

(gdb) p mystring 
$1 = {static npos = <optimised out>, 
  _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, 
    _M_p = 0x602028 "my string here"}}

漂亮的打印 C++

但是,我怀疑你想要的是 libstdc++ 的漂亮打印机,它使变量视图看起来像这样:

使用以下内容创建一个 ~/.gdbinit 文件(更新您机器的路径)

python
import sys
sys.path.insert(0, '/usr/share/gcc-4.8/python/')
from libstdcxx.v6.printers import register_libstdcxx_printers
register_libstdcxx_printers (None)
end

然后将您的启动配置指向该 gdbinit 文件并开始调试。

【讨论】:

  • 如何使用在 Windows 中运行的 Eclipse CDT 进行这项工作? (编译器是mingw)
  • @jose.diego 它应该与 Windows 中的工作方式相同,假设您使用启用了 python 的 gdb(afaik mingw 和 msys2 都默认启用),您可能需要更新路径正确的路径。如果这不起作用,请发布一个新答案,显示您使用 eclipse-cdt 标签时遇到的错误,我们可以在那里解决。
  • 看来我必须这样做,而不是:eclipse.org/forums/… 在我的 mingw 发行版中没有 python 二进制文件,所以我将尝试使用我在这里拥有的独立 python 版本之一,而不是
猜你喜欢
  • 1970-01-01
  • 2016-09-11
  • 2015-12-24
  • 2016-12-09
  • 1970-01-01
  • 1970-01-01
  • 2016-03-26
  • 1970-01-01
相关资源
最近更新 更多