2010-11-24 13 views
9

¿Cómo inspecciono una cadena a la que apunta un puntero al recorrer un programa usando gdb? Puedo ver que un puntero apunta al 0x82c6e10. Sé que es una cadena. ¿Cómo lo imprimo? usando printf("%s\n", 0x82c6e10) da Bad format string, missing '"'. El hecho de que gdb no se queje de un comando desconocido me dice que la solución es una variación de lo que estoy haciendo. ¿Estoy en lo cierto? Intenté escapar de las citas, pero eso no ayudó.Cómo imprimir la cadena a la que apunta un puntero mientras se depura usando gdb?

Respuesta

11

Aquí printf no es una función, sino una orden gdb. Omita los paréntesis.

Mejor aún, sólo tiene que utilizar el comando print, o el comando x con formato /s

(En realidad se puede llamar a la función C printf() con el comando call.) `

gdb tiene ayuda voluminosa disponible con el comando help. Intentalo.

13

Probar:

print (char *)pointer 
2

de impresión (char *) 0x82c6e10

16

Uso x en lugar de p:

x /s 0x82c6e10 
Cuestiones relacionadas