2010-10-20 10 views
6

¿Cuáles son algunos de tus trucos favoritos para depurar programas en C++ con gdb?Trucos de depuración específicos de C++ con gdb

interesado en todos los trucos, sino también

  1. cómo se llama a los métodos (que pueden ser virtuales) sobre objetos desde dentro del BGF

  2. inspeccionar objetos STL (bastante imprimirlas)

  3. evitando que gdb entre en el código STL con continue

  4. que trata con inline, threads, tcma lloc (o personalizados) asignadores de la historia

  5. Conservación de los comandos de GDB a través de diferentes sesiones

+0

Estaría muy interesado en la mayoría de los poi nts que ha enumerado allí ... Muy buena pregunta – MOnsDaR

+1

Otro elemento: Paso a paso único a través de listas de inicialización (¿se puede hacer con gdb?) – nobar

Respuesta

3

Trate DDD cuando se depura C++; DDD puede cargar dinámicamente el código fuente para bibliotecas compartidas, y mostrar múltiples variables mientras depura.

+0

Fue * muy * con errores la última vez que lo intenté. No estoy seguro si mejoró mientras tanto. –

+0

Todavía tiene muchos errores. Comparado con lo que veo en Mac (Xcode) o Windows (Studio), está a años luz de distancia. – user231536

+0

Totalview es mejor, pero cuesta dinero y Xcode/Studio depende de la plataforma, por lo que DDD a veces es la única opción. –

2

1.

set print object 

Esto permite la evaluación de la jerarquía de objetos examinado la viable. Para que pueda ver qué tipo es una referencia/puntero a una clase base.

2.

Obtener las informaciones de depuración o bibliotecas no segregada por las librerías del sistema (que es más importante: pthread y libstdC++) ya que de lo contrario la depuración de aplicaciones multihilo no está funcionando muy bien en el BGF.

0

Desde que descubrí cómo podría utilizar los ganchos en ~/.gdbinit para embellecer la salida del BGF (lista, traza, etc.), que no podría vivir sin eso ...

Aquí está una entrada de blog lo que demuestra cómo embellecer el código de salida y para poner un poco de "divisor" entre sus comentarios: Beautify GDB

he embellecido mi traza inversa también, extremadamente útil para encontrar donde ha ocurrido un error ahora ... Tal vez yo Cargaré los archivos necesarios cuando tenga acceso a ellos (no estoy trabajando ahora)

+0

El enlace parece estar muerto. – Oak

+0

Tienes razón. Sin embargo, puede encontrar una instantánea en los archivos de internet: http://web.archive.org/web/20101217181206/http://www.michaelkelleher.info/?p=51 – MOnsDaR

Cuestiones relacionadas