2012-03-14 20 views
39

¿Cuál es la diferencia entre GDB & Depuradores LLDB? Recientemente actualicé mi versión de Xcode de 4.2 a 4.3 & comencé a recibir una advertencia para actualizar mi depurador de GDB a LLDB.GDB Vs Depuradores LLDB

+0

Una diferencia importante que me impide realizar cambios es que GDB es muy inteligente para imprimir matrices grandes con mucho contenido repetitivo, mientras que LLDB simplemente apaga la barra de desplazamiento vertical. –

+1

Lo que me gusta de LLDB es que su sintaxis es más estructurada. GDB es un poco más libre formado. –

Respuesta

39

LLDB es parte del conjunto de herramientas LLVM a las que se está mudando Apple, incluido Clang. Hay toneladas de características mejoradas, incluido un rendimiento mejorado. Hay una introducción rápida para los usuarios del BGF aquí: http://lldb.llvm.org/tutorial.html

Sin embargo ...

Es posible que desee hacer un viaje a los foros en developer.apple.com. Hay un poco de ruido sobre los problemas con LLDB en este momento (en XCode 4.3.1). Un desagradable problema, que las personas de Apple han confirmado, es que la visualización de ivars mientras avanzas puede mostrarte los valores incorrectos.

+8

Ese error es el motivo por el que me encontrarás utilizando GDB por el momento :) –

+0

¡Gracias por mencionar este problema! Me estaba volviendo loco sobre lo que me mostró el depurador LLDB. Fue bastante imposible. GDB funciona mejor, de hecho. –

+0

Hola. Ha pasado un año. ¿El LLDB todavía no es tan bueno? – Voldemort

9

1. Diferencia de Definición

En primer lugar, ¿Cuál es el BGF?

"BGF es el depurador estándar para el sistema de software GNU"
El depurador GNU, usualmente llamado simplemente BGF BGF y nombrado como un archivo ejecutable, es el depurador estándar para el sistema operativo GNU. Sin embargo, su uso no está estrictamente limitado al sistema operativo GNU; es un depurador portátil que se ejecuta en muchos sistemas tipo Unix y funciona para muchos lenguajes de programación, incluidos Ada, C, C++, Objective-C, Free Pascal, Fortran, Java 1 y parcialmente otros. 2

(cita de Wikipedia)

En segundo lugar, ¿Qué es LLDB?

"LLDB es un depurador construido como un conjunto de componentes reutilizables que las bibliotecas altamente influir existentes en el proyecto LLVM más grande, como el analizador de expresiones Clang y LLVM desensamblador.
LLDB es Apple‘desde la base’de reemplazo para GDB, desarrollado en estrecha coordinación con los compiladores de LLVM para brindarle una depuración de vanguardia con amplias capacidades en control de flujo e inspección de datos. Comenzando con Xcode 5, todos los proyectos de desarrollo nuevos y preexistentes se reconfiguran automáticamente para usar LLDB. La instalación estándar de LLDB le proporciona un amplio conjunto de comandos diseñados para ser compatibles con los comandos familiares de GDB. Además de utilizar la configuración estándar, puede personalizar fácilmente LLDB según sus necesidades.

(cita del sitio oficial de Apple)
/* Intenté encontrar datos reales/prácticos para probar la afirmación: LLDB ya es mucho más rápido que GDB al depurar programas grandes). Sin embargo, no pude encontrarlo. si hay alguien que tenga estos datos relacionados, edite este artículo. */

Ambos, GDB y LLDB son, por supuesto, excelentes depuradores sin duda.
GDB es parte del depurador del proyecto GNU creado para trabajar a lo largo del compilador GNU.
LLDB es parte del depurador del proyecto LLVM creado para trabajar junto con el compilador LLVM.

2.Por diferencia del uso del comando del depurador

La mayoría de los comandos son los mismos.
Sin embargo, lldb y gdb, dos depuradores diferentes son desarrollados por diferentes conjuntos de desarrolladores y tienen comandos un poco diferentes.

Este es un buen enlace a continuación para comparar la diferencia de estos dos comandos de depurador.
me dejó un enlace Las detalle a continuación: 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

Esto indica claramente y organiza la diferencia de los comandos.

En caso de que ya no se pueda acceder al sitio, resumo la principal diferencia de comandos a continuación desde el sitio vinculado.

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. Por opinión personal

LLDB se ha integrado plenamente a partir de Xcode IDE 5 por defecto como depurador primario.
A partir de ese momento, ha habido algún informe de queja sobre la estabilidad de LLDB, problemas de rendimiento y errores.
Sin embargo, el proyecto LLVM con LLDB se ha mejorado y mejorado increíblemente hasta ahora como el proyecto de código abierto principal en el mundo.
Por lo tanto, creo que, al menos, LLDB debería utilizarse para el entorno de desarrollo de Apple ya que LLDB robó la posición de GDB y ya es el depurador predeterminado principal al menos en el mundo de Apple.
(A finales de septiembre de 2016, se lanzó oficialmente la integración de LLVM y LLDB de Xcode 8, lo que significa que se ha pasado bastante tiempo desde que LLVM/LLDB es cadena de herramientas predeterminada para Xcode.)
Pero, todos sabemos que GDB tiene ha sido histórica y fuertemente verificada y depurada comprobada durante más de 30 años, lo cual es asombroso.

Por lo tanto, yo diría ...
me gustaría utilizar LLDB durante el uso de sonido metálico, su uso durante el uso de GDB compilador gcc como la buena combinación o LLDB pair porque se basa en llvm, mientras que el BGF es un depurador de GNU.

Desearía que podría ser útil para usted.

Gracias.