Me gustaría rastrear un código en GIMP y, por lo tanto, necesito GIMP con símbolos de depuración habilitados. No recuerdo si los he habilitado durante la compilación. ¿Cómo verificar eso sin recompilar el programa?¿Cómo comprobar si el programa se compiló con símbolos de depuración?
Respuesta
Puede usar file
y objdump
en Linux. En particular, puede ver si el archivo dice "pelado" o "sin pelar", y si objdump --syms
muestra algo útil (para mí, dice "sin símbolos" para una compilación normal).
Cuando se ejecuta el comando objdump --syms
, veo mucho más que "no hay símbolos" en la salida (por lo menos, para los objetos del núcleo ).
Para comprobar si hay información de depuración dentro del objeto kernel, puede agregar lo siguiente al final del comando objdump
: | grep debug
.
Si se encuentra esta cadena, usted sabe que el objeto kernel contiene información de depuración. Si no, entonces es un objeto kernel "limpio".
Ejemplo de un módulo del kernel he compilado sin información de depuración:
[email protected]:~/mystuff/kernels/linux-3.12.6$ objdump --syms ./modules/lib/modules/3.12.6/kernel/drivers/i2c/busses/i2c-at91.ko | grep debug
Ejemplo de ese mismo módulo del kernel he compilado con la información de depuración:
[email protected]:~/mystuff/kernels/linux-3.12.6$ objdump --syms ./modules/lib/modules/3.12.6/kernel/drivers/i2c/busses/i2c-at91.ko | grep debug
00000000 l d .debug_frame 00000000 .debug_frame
00000000 l d .debug_info 00000000 .debug_info
00000000 l d .debug_abbrev 00000000 .debug_abbrev
00000000 l d .debug_loc 00000000 .debug_loc
00000000 l d .debug_aranges 00000000 .debug_aranges
00000000 l d .debug_ranges 00000000 .debug_ranges
00000000 l d .debug_line 00000000 .debug_line
00000000 l d .debug_str 00000000 .debug_str
00000010 l .debug_frame 00000000 $d
Como se puede ver, la primera salida no devuelve nada, mientras que la segunda salida devuelve líneas con debug
.
Nota: en mi caso, el comando file
me devolvió "no eliminado" en tanto en caso de depuración como de no depuración. Sin embargo, la diferencia de tamaño del objeto kernel fue notable:
- aprox. 16k sin información de depuración
- aprox. 137k con información de depuración
Claramente, la última versión tenía información de depuración dentro.
Mi pregunta: ¿el comando file
es confiable en tales casos? Por lo que he experimentado, confío en el comando objdump --syms ... | grep debug
.
Yo también tuve el mismo problema con 'archivo'. Para mí, 'objdump --syms' sin el bit' grep' produce muchos resultados incluso en la compilación sin depuración, pero el 'grep' ayuda a invocar los símbolos específicos de depuración solo, así que eso funciona para mí. – patrickvacek
+ uno para despejar la vaguedad en la salida de 'archivo' – ADJ
- 1. ¿Determina si el archivo .class se compiló con información de depuración?
- 2. ¿Cómo comprobar si el programa se ejecuta desde una consola?
- 3. C# poner la fecha en el programa cuando se compiló
- 4. ¿Cómo se ven los símbolos de depuración?
- 5. ¿Cómo comprobar si el programa se ejecuta con el control de Visual Studio?
- 6. comprobando si se compiló un binario con "-static"
- 7. ¿Cómo hacer que gdb salga si el programa tiene éxito, se rompe si el programa falla?
- 8. ¿Cómo comprobar la versión de python con la que se compiló vim?
- 9. Símbolos de depuración no cargando
- 10. cómo comprobar si el archivo pdb es válido para la depuración de un conjunto
- 11. ¿Cómo puedo construir openssl con símbolos de depuración? [add libeay.pdb]
- 12. Cómo averiguar si se compiló un ensamblado .NET con el indicador TRACE o DEBUG
- 13. C# - cómo comprobar si un proceso se inició con éxito
- 14. ¿Cómo saber si un programa se bloqueó con un subproceso?
- 15. Cualquier forma de determinar cuándo se compiló/construyó un programa .net
- 16. comprobar el programa java de instancia única
- 17. símbolos de depuración en Erlang
- 18. ¿Cómo se compiló mi php en ejecución?
- 19. no se encontraron símbolos de depuración al usar gdb
- 20. ¿Cómo comprobar si un programa está utilizando .NET?
- 21. Comprobar si el proceso se está ejecutando
- 22. ¿Cómo comprobar si se construyó un ensamblado utilizando la configuración de depuración o liberación?
- 23. No hay símbolos de depuración en gdb incluso cuando se compila con la bandera -g
- 24. ¿Cómo comprobar si virtualenv se creó con '--no-site-packages'?
- 25. Usando perlbrew para construir un perl con símbolos de depuración
- 26. ¿Cómo depurar un programa compilado con 'make'?
- 27. Cómo comprobar si el correo se ha enviado correctamente
- 28. Símbolos de depuración en modo de lanzamiento
- 29. C++ determinar si compilar con símbolos de depuración sin definir un símbolo de preprocesador
- 30. Problema con el programa de Visual C++: no se puede encontrar el CRT de depuración
Despojado significa que no hay símbolos, ¿verdad? –
el equivalente para OS X es 'otool -Iv'. –
qué buscar en la salida de otool -Iv? –