¿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?¿Cómo evitar ingresar archivos fuente de la biblioteca mientras se depura en Qt Creator con gdb?
Respuesta
Necesitas desactivar la auto-solib-add. Desde un símbolo del BGF normales debería escribir:
(gdb) set auto-solib-add off
En Qt Creator, bajo Opciones-> Debugger-> Gdb puede especificar un script de inicio BGF. Cree un archivo con el comando "set auto-solib-add off" y luego configure el script de inicio de Gdb en ese archivo.
no funcionará con la compilación estática por supuesto (está en el nombre auto-SOlib-add). –
actualización después de la clarificación comentario:
En GDB puede especificar qué source directories are searched - si no los encuentra, no será capaz de entrar en 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 la secuencia de comandos de inicio y si gdb encuentra los archivos de origen por su cuenta, debería poder modificar la secuencia de comandos de inicio de gdb para borrar los directorios con el comando directory
(consulte el enlace anterior para conocer 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.
Esto es lo que creo que Piotr quiere: tiene una llamada como foo (QVariant :: fromValue (MySuperClass (QString ("hi% 1"). Arg ("Andy")))). Al entrar, el depurador debe omitir arg, el constructor QString, la llamada fromValue e ingresar solo MySuperClass y foo. AFAIK, Qt Creator no puede hacer esto. Hubo una discusión sobre saltarse la maquinaria sig/tragamonedas al pasar por el código, pero no sé si lo implementaron. – rpg
Andy, lo que estás describiendo se llama STEP OUT y STEP OVER y siempre ha sido posible en casi todos los depuradores. No quiero ** ** avanzar manualmente/sobre el código fuente de Qt. Quiero que el depurador lo pise ** automáticamente **.RPG tiene razón en su comentario y él describe la función que estaba preguntando. –
La característica 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 propone una característica similar, pero más fácil de usar fstep
para GDB
. Teniendo en cuenta:
foo((string("Hello") + string(" World!)).c_str());
la fstep
poder omitir todas las llamadas en la línea actual, excepto la última (saltándose constructores de cuerda, operator+()
y c_str()
, y entrar solamente en foo
).
Esto no se ha implementado tampoco, pero probablemente estará en un par de meses (es muy útil para la depuración C++
).
Por el momento, se puede aproximar la característica 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
¿Qué piensas acerca de la proposición de Andy de simplemente eliminar/ocultar los archivos fuente de la biblioteca? –
Puedes intentarlo, pero no creo que te sirva de nada: GDB aún se adentrará en las funciones que no deseas, simplemente no mostrará la fuente de ellas. Podría decirse que es peor de lo que comenzaste. Además, si se encuentra en la plataforma ELF (por ejemplo, Linux), debería eliminar realmente los encabezados de las bibliotecas: el compilador los incluye en su ejecutable (IOW, la modificación de la secuencia de comandos de inicio de GDB probablemente resulte inútil). –
@Employed: es 2012 y fstep todavía no es parte de GDB. ¿Hay otra alternativa? (O un parche que podría aplicar a las fuentes gdb) Esto es de hecho una necesidad para el desarrollo de C++. – nimrodm
- 1. ¿Cómo puedo ingresar comandos a un indicador gdb mientras se depura con Eclipse CDT?
- 2. Usar una biblioteca estática en Qt Creator
- 3. Configurar Qt Creator para que funcione con GDB
- 4. Cmake con Qt Creator
- 5. Cómo evitar que Visual Studio inicie WcfSvcHost.exe mientras se depura?
- 6. Acceso a la consola gdb en Qt-Creator
- 7. Actualización de gdb para usar en Qt Creator
- 8. Asignación de depuración en Qt Creator
- 9. Cómo imprimir la cadena a la que apunta un puntero mientras se depura usando gdb?
- 10. Cómo ver una DataTable mientras se depura
- 11. Busque la ruta del código fuente para el ejecutable que se depura actualmente en gdb
- 12. C++ 0x con Qt Creator
- 13. Qt Creator Code File Refactoring
- 14. ¿Cómo cambiar el valor de las variables mientras se depura con LLVM en Xcode?
- 15. Agregar biblioteca externa al proyecto de Qt Creator
- 16. ¿Cómo hacer que Qt Creator funcione con CDB?
- 17. Envío de mensajes a objetos mientras se depura Objective-C en gdb, sin símbolos
- 18. Promoción de widgets en Qt Creator
- 19. Advertencia de enlazador LNK4099 con QT Creator
- 20. Eclipse CDT: 'no se puede encontrar un archivo fuente' mientras se depura
- 21. Qt Creator remote debugger
- 22. Configuración de prueba de unidad en Qt Creator
- 23. ¿Hay alguna manera de abrir dos archivos fuente simultáneamente en Qt Creator 2.3?
- 24. ¿Cómo se puede usar Qt Creator como IDE general de C++ (sin uso de la biblioteca Qt)?
- 25. Entrada de consola con Qt Creator
- 26. Creación de menú contextual con Qt Designer (Qt Creator IDE)
- 27. ¿Cómo implementar mi aplicación usando Qt-Creator?
- 28. Soluciones de Visual Studio en Qt Creator
- 29. Evitar internos de Groovy/Grails mientras se depura en IntelliJ Idea
- 30. Cómo suprimir advertencias en Qt Creator
mismo problema para cdb, ¿cómo manejarlo? – raidsan