tutorial programacion open interfaz grafica full descargar creator c++ debugging qt gdb qt-creator

c++ - programacion - qt full



¿Cómo evitar ingresar a los archivos fuente de la biblioteca mientras se depura en Qt Creator con gdb? (3)

Debe desactivar auto-solib-add. Desde un indicador de gdb normal debe escribir:

(gdb) set auto-solib-add off

En Qt Creator, en Opciones-> Depurador-> Gdb puede especificar un script de inicio de Gdb. Cree un archivo con el comando "set auto-solib-add off" y luego configure el script de inicio de Gdb en ese archivo.

¿Cómo puedo configurar Qt Creator y / o gdb para que, al depurar mi programa utilizando bibliotecas Qt, el depurador evite entrar en los archivos fuente de Qt?


La función que desea (como se describe en rpg) no está disponible en GDB , y en mi humilde opinión sería difícil de usar si se implementara.

Se fstep característica fstep similar pero más simple de usar para GDB . Dado:

foo((string("Hello") + string(" World!)).c_str());

el fstep omitirá todas las llamadas en la línea actual, excepto la última (omitiendo así los constructores de cadenas, operator+() y c_str() , y pasando solo a foo ).

Esto tampoco se ha implementado, pero probablemente estará en un par de meses (es muy útil para la depuración de C++ ).

Mientras tanto, puede aproximar la función estableciendo un punto de interrupción temporal:

(gdb) list 1 #include <string> 2 #include <iostream> 3 using namespace std; 4 5 void foo(const char *s) 6 { 7 cout << s << endl; 8 } 9 10 int main() 11 { 12 foo((string("Hello") + string(" World!")).c_str()); 13 return 0; 14 } (gdb) b main Breakpoint 2 at 0x8048901: file t.cc, line 12. (gdb) run Breakpoint 1, main () at t.cc:12 12 foo((string("Hello") + string(" World!")).c_str()); (gdb) tb foo Breakpoint 3 at 0x80488ca: file t.cc, line 7. (gdb) c foo (s=0x804a1f4 "Hello World!") at t.cc:7 7 cout << s << endl; (gdb) q


Actualización después de la aclaración de los comentarios:

En gdb puede especificar en qué directorios fuente se busca ; si no puede encontrarlos, no podrá acceder a ellos.

Para que gdb ingrese los archivos fuente de las bibliotecas qt, debe saber dónde están; es probable que qt-creator le indique a gdb dónde se encuentran cuando inicia el depurador. Mire alrededor de qt-creator para la secuencia de comandos de inicio de gdb: podrían especificarse allí.

Si no se especifican en el script de inicio y si gdb encuentra los archivos de origen por su cuenta, debería poder modificar el script de inicio de gdb para borrar cualquier directorio con el comando de directory (consulte el enlace anterior para ver la sintaxis, etc.)

También puede ver la consola de gdb yendo a "Depurar -> Vistas -> Gdb" para obtener información sobre los directorios de origen que está utilizando actualmente con el comando show directories en gdb, y borrar cualquiera de forma manual si desea hacer esto caso por caso.