我有一个巨大的嵌套数据结构(来自JSON精灵)的问题。在调试时,当这个结构充满数据时,Eclipse在每一步都等待GDB打印数据后开始工作非常缓慢。问题是,即使我没有扩展这个数据结构,Eclipse也收集了很多关于局部变量的信息。当漂亮的打印关闭时,它可以正常工作,但是当然我在STL容器内看不到任何东西。Eclipse CDT(4.5.1)与漂亮的打印工作缓慢
我使用打印机从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
中有一个标志,它可以限制要打印的容器中的元素的数量,它可以工作,但是当我对这些嵌套结构不感兴趣时,这些设置会影响我想要检查的其他容器。
任何想法如何解决它?
谢谢。
这看起来与https://bugs.eclipse.org/bugs/show_bug.cgi?id=519561非常相似,我很欣赏你所做的分析。你能否给bug添加相同的细节,特别是如果你相信它是相同的。谢谢! –