【发布时间】:2016-10-14 20:26:43
【问题描述】:
我对庞大的嵌套数据结构有疑问(来自 JSON Spirit)。在调试时,当这个结构被数据填充时,Eclipse 开始工作很慢,在每一步之后它都等待来自 GDB 的打印数据。问题是即使我没有扩展这个数据结构,Eclipse 也会收集很多关于局部变量的信息。当漂亮的打印关闭时,它可以工作,但当然我在 STL 容器中看不到任何东西。
我正在使用来自GDB SVN的打印机
这里有一小段代码可以产生类似的问题:
#include <iostream>
#include <string>
#include <map>
int main() {
std::map<std::string, std::map<std::string, std::map<std::string, std::string>>> mega_map;
const int factor = 50;
for (int c = 0; c < factor; ++c){
std::map<std::string, std::map<std::string, std::string>> b_map;
for (int b = 0; b < factor; ++b){
std::map<std::string, std::string> a_map;
for (int a = 0; a < factor; ++a){
std::string a_str = "a";
a_str += (std::to_string(a));
auto a_pair = std::make_pair("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" + a_str, "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz");
a_map.insert(a_pair);
}
std::string b_str = "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb";
b_str += (std::to_string(b));
b_map[b_str] = a_map;
}
std::string c_str = "cccccccccccccccccccccccccccccccccccccccc";
c_str += (std::to_string(c));
mega_map[c_str] = b_map;
}
return 0;
}
只需在“返回”时刹车,您会发现在“变量”窗口中获取某些内容需要很长时间。在那段时间你不能调试。
GDB set print elements number-of-elements 中有一个标志可以限制容器中要打印的元素数量,它可以工作,但是虽然我对这些嵌套结构不感兴趣,但此设置会影响我想要检查的其他容器。
有什么解决办法吗?
谢谢。
【问题讨论】:
标签: c++ debugging eclipse-cdt pretty-print