2012-10-02 14 views
7

Me gustaría saber cómo depurar mejor en xcode. Sé cómo establecer un punto de inflexión pero, idealmente, me gustaría que el simulador se detenga y luego seguir el código ...Depuración en XCode - ejecutando código y puntos de corte

No paso por los puntos de interrupción, pero paso por el código línea por línea para poder ver a dónde va, qué métodos se ejecutan, etc. ...

¿Es esto posible? De ser así, ¿cómo?

Respuesta

23

Debug control icons in Xcode

En la parte inferior izquierda de la ventana de código en Xcode 4 se puede ver los controles de paso de depuración. Cada uno tiene un breve texto alternativo para explicarlo. Explicaré con un poco más de detalle aquí. Aprender a convertirse en un depurador experto es el tema de muchos libros de texto.

El botón play alt text: Continúa la ejecución del programa. Probablemente ya hayas encontrado esto. Presionándolo avanza al siguiente punto de interrupción.

La flecha de salto alt text: Paso sobre. Presionar este botón repetidamente le permitirá avanzar a través de su programa en el nivel actual de alcance tal como lo haría su programa. Le permitirá observar el comportamiento de su programa paso a paso a través del método actual. Cuando finalice el método actual, Step over lo llevará al método de llamada un paso hacia arriba en la pila de programas.

La flecha hacia abajo texto alternativo: Ingrese a. Presionando este botón seguirá el nuevo método en su alcance y le permitirá ver el código en el método llamado si se ha compilado para la depuración. Por ejemplo, al hacer clic en la línea de código actual en la ventana de depuración anterior, accederá al método _generateSources, que luego podrá seguir adelante con Step over.

La flecha hacia arriba alt text: Salir. Te saca del contexto actual y al método de llamadas un paso adelante en la pila de programas. Esto se comporta de forma idéntica a finalizar un método utilizando Paso a paso, ejecutar el programa como normal y ejecutar todas las líneas de código en el alcance original que no depuró utilizando Paso a paso.

View of call stack

Haga clic en la silueta con el fondo azul para ver la pila de llamadas actual. La pila de llamadas siempre progresará desde su alcance actual hasta el primer método que se invocó para iniciar su programa. Cada método que ves aquí fue llamado en secuencia para alcanzar - [HelloWorldLayer init]. Al presionar Al salir, la línea actual del código de ejecución volverá a - [CCNode node], y si tiene la fuente, puede navegar por él.

A la izquierda están las variables locales actuales visibles desde el alcance de la línea de código que se está ejecutando actualmente (línea 76 en esta imagen). Estas variables son cómo puede usar realmente los comandos anteriores, como Paso sobre. fondo y winSize son variables locales que se definieron en este ámbito y se están utilizando actualmente. Cuando se sale del alcance, desaparecerán. _cmd es un puntero al selector que se está invocando actualmente en Objective-C: - [HelloWorldLayer init]. No necesitarás esto hasta que seas un depurador avanzado.self es el puntero a un objeto que contiene todos los ivars que pertenecen a la clase en ejecución actualmente, HelloWorldLayer y objc_super es un puntero a la clase principal de HelloWorldLayer.

+0

esta es la razón i luv Xcode – Goldname

8

Agregaría atajos de teclado a la respuesta de @Thomson Corner.

  • Use 'c' para continuar. 's' al paso, 'n' al siguiente, 'f' al final. No me gusta operar el depurador con el mouse. Esos iconos son demasiado pequeños y obtener el puntero sobre ellos es un dolor (de vez en cuando). Siempre he sido un chico del teclado y es REALMENTE cómodo con el teclado.

  • También debería intentar usar po - imprime los valores de las variables con sugerencias tipo por delante. Como po _varName. Facilita comprobar si una variable tiene valores nulos, etc.

  • También puede cambiar sus alias de comando modificando ~/.lldbinit.

Aquí está el tutorial oficial: http://lldb.llvm.org/tutorial.html. Y otro tutorial: http://www.informit.com/articles/article.aspx?p=1829415&seqNum=6. Lo que señalé anteriormente son las funciones de depuración más básicas que realizan principalmente los programadores. Hay más opciones, como puntos de interrupción de excepción y programas de carga, pero estoy bastante seguro de que son para otro día si recién estás comenzando.

+0

https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/xcode_help-command_shortcuts/MenuCommands/MenuCommands014.html da una guía bastante completa a XCode actual apoya atajos. –

Cuestiones relacionadas