При отладке с помощью GDB во время одного сеанса отладки она становится все медленнее и медленнее с течением времени. Даже самые простые операции, такие как «шаг за шагом», могут занимать десятки секунд, а иногда даже минут.
Я отлаживал довольно большой проект (браузер Chromium). Единственная причина, по которой я мог придумать, заключалась в том, что GDB становится медленнее со временем, потому что он загружает все больше и больше символов и требует больше времени для работы с ними. Однако Chromium компилирует весь код в один огромный исполняемый файл, который содержит все символы, которые должны быть загружены в самом начале. Таким образом, база данных символов не будет расти во время отладки. Более того, зачем искать символы просто для того, чтобы выполнить переход или перейти к работе?
Во время тестирования я пытался использовать gdb с внешними интерфейсами (Eclipse, QtCreator, Emacs) и из командной строки, чтобы подтвердить, что это не проблема IDE. Оба варианта использования демонстрируют одну и ту же проблему, однако кажется, что она начинает появляться раньше в IDE (возможно, потому что IDE также загружает символы для представления просмотра, стека вызовов, списка потоков и т. Д.).
Почему ГБД замедляется? Это ошибка дизайна, ошибка или какая-то конкретная проблема на моем компьютере? Есть ли бесплатные альтернативы GDB, которые работают быстрее?