В чем разница между отладчиками GDB и LLDB? Недавно я обновил версию Xcode с 4.2 до 4.3 и начал получать предупреждение для обновления моего отладчика от GDB до LLDB.
Отладчики GDB Vs LLDB
Ответ 1
LLDB входит в набор инструментов LLVM, к которым Apple переходит, включая Clang. Есть тонны улучшенных функций, в том числе улучшенная производительность. Здесь есть быстрый ввод для пользователей GDB: http://lldb.llvm.org/tutorial.html
Однако...
Возможно, вы захотите отправиться на форум на developer.apple.com. В настоящий момент существует довольно много грохота о проблемах с LLDB (в XCode 4.3.1). Одна неприятная проблема, которую люди из Apple подтвердили, заключается в том, что просмотр иваров при шаге может показать вам неправильные значения.
Ответ 2
1. По разности определения
Во-первых, что такое GDB?
"GDB является стандартным отладчиком для программной системы GNU"
Отладчик GNU, обычно называемый просто GDB и названный gdb в качестве исполняемого файла, является стандартным отладчиком для операционной системы GNU. Однако его использование строго не ограничивается операционной системой GNU; это переносимый отладчик, который работает во многих Unix-подобных системах и работает для многих языков программирования, включая Ada, C, С++, Objective-C, Free Pascal, Fortran, Java 1 и частично другие. 2
(цитата из Википедии)
Во-вторых, что такое LLDB?
"LLDB - это отладчик, созданный как набор компонентов многократного использования, которые сильно используют существующие библиотеки в более крупном проекте LLVM, такие как парсер выражения Clang и дизассемблер LLVM.
LLDB - это яблоки с нуля GDB, разработанный в тесной координации с компиляторами LLVM, чтобы предоставить вам самую современную отладку с широкими возможностями в управлении потоком и проверке данных. Начиная с Xcode 5, все новые и существующие проекты разработки автоматически переконфигурируются для использования LLDB. стандартная установка LLDB предоставляет вам обширный набор команд, предназначенных для совместимости со знакомыми командами GDB. В дополнение к стандартной конфигурации вы можете легко настроить LLDB в соответствии с вашими потребностями.
(цитата из официального сайта Apple)
/* Я попытался найти фактические/практические данные, чтобы доказать утверждение: LLDB уже намного быстрее, чем GDB при отладке больших программ.) Однако я не мог найти его. если есть кто-то, у кого есть связанные данные, пожалуйста, отредактируйте эту статью. */
Оба GDB и LLDB, безусловно, отлично отлаживают без сомнения.
GDB является частью отладчика проекта GNU, созданного для работы с компилятором GNU.
LLDB является частью отладчика проекта LLVM, созданного для работы с компилятором LLVM.
2. По разнице использования команды Debugger
Большинство команд одинаковы.
Однако, lldb и gdb, два разных отладчика разрабатываются разными разработчиками и, следовательно, имеют несколько разные команды.
Это хорошая ссылка ниже для сравнения различий этих двух команд отладчика.
позвольте мне связать деталь ниже:
https://developer.apple.com/library/content/documentation/IDEs/Conceptual/gdb_to_lldb_transition_guide/document/lldb-command-examples.html
http://lldb.llvm.org/lldb-gdb.html
Это четко указывает и организует разницу между командами.
В случае, если сайт больше не доступен, я обобщаю основное отличие команд ниже от связанного сайта.
3. По личному мнению
LLDB полностью интегрирован из Xcode IDE 5 по умолчанию в качестве основного отладчика.
С того времени был опубликован некоторый отчет о жалобах на стабильность, проблемы производительности и ошибки LLDB.
Тем не менее, LLVM с проектом LLDB невероятно совершенствуется и модернизируется, поскольку это один из основных проектов с открытым исходным кодом в мире.
Поэтому, по-моему, по крайней мере, LLDB следует использовать для среды разработки Apple, поскольку LLDB украл позицию GDB и уже является основным отладчиком по умолчанию, по крайней мере, в мире Apple.
(В конце сентября 2016 года Xcode 8 интегрировал LLVM и LLDB был официально выпущен, что означает, что прошло довольно много времени, так как LLVM/LLDB является инструментом по умолчанию для Xcode.)
Но мы все уже знаем, что GDB был исторически и сильно проверен, и проверенный временем отладчик более 30 лет, что является удивительным.
Итак, я бы сказал...
Я хотел бы использовать lldb при использовании clang, использовать gdb, используя gcc-компилятор в качестве хорошей комбинации или пары, потому что lldb основан на llvm, тогда как gdb - отладчик GNU.
Я бы хотел, чтобы это было полезно для вас.
Спасибо.