2011-01-26 11 views
15

¿Hay alguna manera de rastrear cambios de variables o cambios de memoria en Xcode? Estoy buscando funcionalidad como punto de interrupción de datos de Visual Studio.Variable de seguimiento o cambio de memoria en Xcode?

Quiero saber dónde está cambiando el marco de vista de mi objeto. Quiero establecer un punto de interrupción en una variable miembro y ejecutarlo. Entonces podría determinar dónde ha cambiado.

Respuesta

19

Xcode usa gdb (o lldb, pero esa es otra historia) para implementar su funcionalidad de depuración. gdb tiene la capacidad de establecer puntos de observación de hardware y, por lo tanto, también lo hace Xcode.

This es una página útil para la depuración genérica de errores de memoria. La ventana de la consola de depuración de Xcode es realmente solo un shell gdb, puede escribir los comandos que desee. Quinn Taylor siempre útil explica cómo hacerlo en la publicación relacionada this.

Si prefiere evitar interactuar directamente con gdb, puede hacer clic con el botón derecho en una variable en la ventana de depuración de Xcode y seleccionar "Ver variable". Xcode lo alertará siempre que se cambie el valor de su variable.

+0

¡Aprecie la respuesta detallada! ¡Lo intentaré! – SeniorLee

+0

¡Nunca pensé hacer clic derecho en las variables en la ventana del reloj! Ahora, para esperar que realmente lo golpee;) Parece bastante sobrio solo mostrar valores variables - decirme que los vars locales están fuera del alcance realmente no es útil –

+0

@LaceySnr: verifique mi respuesta. Tengo el mismo problema con el reloj XCode. Es por eso que estoy usando gdb watchpoint. –

1

Sí.

En el menú Ejecutar hay "Depurador" que proporciona una interfaz visual a gdb.

Además, hay un botón de punto de interrupción al lado del botón Generar y Ejecutar. Puede hacer clic en eso y administrar sus puntos de interrupción en Ejecutar> Gestionar puntos de interrupción.

+1

No estoy seguro de que esto es lo que está buscando. Está hablando de puntos de corte estándar, pero está hablando de interrumpir cuando los datos almacenados en una ubicación de la memoria cambian. Más como un punto de observación que un punto de interrupción. –

+0

Lo tengo. Sí, no sé si hay algún "disparador" como ese. Sin embargo, a través del depurador y el uso de puntos de interrupción estándar, puede ver el cambio de datos. Probablemente no sea tan sencillo como Visual Studio. – aqua

9

Puede usar hardware watchpoints.


usted tiene que conseguir la dirección de la variable que desea realizar un seguimiento (tipo p &my_var en el símbolo GDB).

Se imprimirá somehting como 0x12345678.

  • con gdb: tipo watch *(int *)0x12345678.

  • Con LLDB: watch set expression (int *)0x12345678 (o w s e (int *)0x12345678)

Esto supone que su variable es un int. Creará un punto de observación de hardware en esta dirección.


Espero que esto ayude.

Cuestiones relacionadas