Отладчики GDB и LLDB - PullRequest
       20

Отладчики GDB и LLDB

49 голосов
/ 14 марта 2012

В чем разница между отладчиками GDB и LLDB?Я недавно обновил свою версию XCode с 4.2 до 4.3 и начал получать предупреждение об обновлении моего отладчика с GDB до LLDB.

Ответы [ 2 ]

43 голосов
/ 15 марта 2012

LLDB является частью набора инструментов LLVM, на который Apple переходит, включая Clang. Есть множество улучшенных функций, включая улучшенную производительность. Здесь есть краткое введение для пользователей GDB: http://lldb.llvm.org/tutorial.html

Однако ...

Возможно, вы захотите совершить путешествие на форумы по адресу developer.apple.com. На данный момент довольно много уроков о проблемах с LLDB (в XCode 4.3.1). Одна неприятная проблема, которую подтвердили люди из Apple, заключается в том, что при просмотре ivars при пошаговом воспроизведении могут отображаться неправильные значения.

16 голосов
/ 27 сентября 2016

1. По разнице определений

Во-первых, что такое GDB?

«GDB - стандартный отладчик для программной системы GNU»
Отладчик GNU, обычно называемый просто GDB и называемый gdb как исполняемый файл, является стандартным отладчиком для операционной системы GNU. Однако его использование строго не ограничено операционной системой GNU; это портативный отладчик, который работает во многих Unix-подобных системах и работает для многих языков программирования, включая Ada, C, C ++, Objective-C, Free Pascal, Fortran, Java 1 и частично другие. 2

(цитата из Википедии)

Во-вторых, что такое LLDB?

"LLDB - это отладчик, построенный как набор повторно используемых компонентов, которые эффективно используют существующие библиотеки в более крупном проекте LLVM, такие как синтаксический анализатор выражений Clang и дизассемблер LLVM.
LLDB - это замена" с нуля "компании Apple GDB, разработанный в тесной координации с компиляторами LLVM, чтобы предоставить вам современную отладку с широкими возможностями в управлении потоком и проверке данных.Начиная с Xcode 5, все новые и ранее существующие проекты разработки автоматически реконфигурируются для использования LLDB. стандартная установка LLDB предоставляет вам широкий набор команд, разработанных для совместимости со знакомыми командами GDB.В дополнение к стандартной конфигурации вы можете легко настроить LLDB в соответствии со своими потребностями.

(цитата с официального сайта Apple)
/ * Я попытался найти реальные / практические данные, чтобы доказать утверждение: LLDB уже намного быстрее, чем GDB при отладке больших программ.) Однако я не смог его найти. если кто-то имеет эти связанные данные, пожалуйста, отредактируйте эту статью * /

И GDB, и LLDB, без сомнения, являются отличными отладчиками.
GDB является частью отладчика проекта GNU, созданного для работы вместе с компилятором GNU.
LLDB является частью отладчика проекта LLVM, созданного для работы вместе с компилятором LLVM.

2. По разнице в использовании команды отладчика

Большинство команд одинаковы.
Тем не менее, 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

Это четко указывает и организует различие команд.

В случае, если сайт больше не доступен, я кратко излагаю основное отличие приведенных ниже команд от связанного сайта.

Execution command difference between GDB and LLDB Break-Point command difference between GDB and LLDB Examining variable command difference between GDB and LLDB Examining thread state command difference between GDB and LLDB

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.

Хотелось бы, чтобы это было полезно для вас.

Спасибо.

...