GDB стал работать медленно после написания шаблонизированного кода C++ [закрыто] ⇐ C++
-
Anonymous
GDB стал работать медленно после написания шаблонизированного кода C++ [закрыто]
Я перенес приложение, написанное без использования шаблонов, в сильно шаблонизированный дизайн (с использованием трейтов и других методов метапрограммирования). Это приложение использует несколько других файлов .so (один из них называется libxyz.so).
Я скомпилировал двоичный файл отладки и запустил его с помощью GDB, используя
gdb --args Для отладки с помощью GDB я печатаю значения определенных объектов, которые присутствуют в libxyz.so. Печать этих переменных при использовании GDB становится чрезвычайно медленной и занимает около 15-20 секунд. Раньше выполнение того же упражнения с предыдущей версией моего двоичного файла выполнялось очень быстро (1–2 секунды).
Распечатка локальных аргументов или аргументов функции с использованием новых и старых двоичных файлов по-прежнему выполняется достаточно быстро.
Размер старой и новой библиотеки практически одинаковый (~30 МБ).
Я проверил количество символов в новой и старой библиотеке.
readelf -Ws libnew.so Новая библиотека содержит около 230 дополнительных символов, а общее количество символов составляет ~13500.
Я не могу понять, почему GDB стал таким медленным. Кто-нибудь сталкивался с этой проблемой раньше? Или может кто-нибудь помочь разобраться в основной причине этой проблемы?
Я использую GDB версии 9.2.
Использование приведенных ниже команд для печати типа объекта в GDB
пространство имен ptype::variable
Я перенес приложение, написанное без использования шаблонов, в сильно шаблонизированный дизайн (с использованием трейтов и других методов метапрограммирования). Это приложение использует несколько других файлов .so (один из них называется libxyz.so).
Я скомпилировал двоичный файл отладки и запустил его с помощью GDB, используя
gdb --args Для отладки с помощью GDB я печатаю значения определенных объектов, которые присутствуют в libxyz.so. Печать этих переменных при использовании GDB становится чрезвычайно медленной и занимает около 15-20 секунд. Раньше выполнение того же упражнения с предыдущей версией моего двоичного файла выполнялось очень быстро (1–2 секунды).
Распечатка локальных аргументов или аргументов функции с использованием новых и старых двоичных файлов по-прежнему выполняется достаточно быстро.
Размер старой и новой библиотеки практически одинаковый (~30 МБ).
Я проверил количество символов в новой и старой библиотеке.
readelf -Ws libnew.so Новая библиотека содержит около 230 дополнительных символов, а общее количество символов составляет ~13500.
Я не могу понять, почему GDB стал таким медленным. Кто-нибудь сталкивался с этой проблемой раньше? Или может кто-нибудь помочь разобраться в основной причине этой проблемы?
Я использую GDB версии 9.2.
Использование приведенных ниже команд для печати типа объекта в GDB
пространство имен ptype::variable
Мобильная версия