У меня есть проблема, отлаживающая приложение C++ с помощью удаленного сеанса GDB, что кодовая база является большой, и поэтому она содержит (при компиляции с флагами -O2, '-g', '-DNDEBUG') большой файл с отладочной информацией (1,1 Гб).Как GDB имеет дело с большими (> 1 Гб) отладочными файлами?
К сожалению, я не могу просто использовать частичные таблицы символов во время отладки, так как все время отладчик пропускает часть приложения, и я не могу установить там точки останова и видеть код во время отладки.
В качестве решения этой проблемы, я выполнить следующие команды после того, как у меня подключен к целевой аудитории:
symbol-file -readnow [path-to-file-with-debugging-info]
Это расширяет полные таблицы символов. Но в этом случае у GDB просто заканчивается память, ударяющая 13 Гб или даже больше ОЗУ (пока у меня только 16 Гб доступно на моей машине). Эта проблема уже указана в GDB Wiki и известна.
Мой вопрос в том, как иметь дело с GDB в этом случае, когда мне нужны полные таблицы символов, но для GDB требуется огромный объем памяти, чтобы расширить его?
Заранее благодарен!
Таблицы с частичными символами - это оптимизация gdb. Если они не работают, то это ошибка gdb, которую вы должны записать. Обычным пользователям никогда не нужно «-readnow» - это скорее опция разработчика gdb и/или обходной путь. –