У меня проблема с огромными вложенными структурами данных (от JSON Spirit). Во время отладки, когда эта структура заполнена данными, 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, и я ценю анализ, который вы сделали. Можете ли вы добавить те же детали к ошибке, особенно если вы считаете, что это то же самое. Благодаря! –