Подтвердить что ты не робот

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

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

4b9b3361

Ответ 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

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

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

Execution command difference between GDB and LLDBBreak-Point command difference between GDB and LLDBExamining variable command difference between GDB and LLDBExamining 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.

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

Спасибо.