Introducción a XCode y Objective-C

Documentos relacionados
Entorno de Programación Visual C++ 6.0

Dpto. Lenguajes y Ciencias de la Computación E.T.S.I. Telecomunicación. Laboratorio de Programación Uso del depurador en Dev-C++

ENSAMBLADO DEL PROGRAMA

Práctica ENS:Ensamblar y depurar

Depurar programas

El entorno de desarrollo eclipse 3.0.1

Guía práctica de estudio: Depuración de programas

MANUAL CONFIGURACIÓN DEL PROGRAMA DEO PARA EMPEZAR A TRABAJAR PASO 3

1. Introducción. 2. Traza remoto. 2.1 Borrar cliente antiguo de la cache de Java

DEPURADOR GDB. Debugging de programas complejos con múltiples archivos.

Configuración del Ratón

Persistencia. Sesión 4: Persistencia en ios. User Defaults y Core Data. Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

[GUÍA RÁPIDA DE MPLAB]

Esta aplicación se ha probado con éxito en los navegadores Internet Explorer 6.0, 7.0, 8.0 y Mozilla Firefox.

Móvil Seguro. Guía de la Consola de Administración

Manual de usuario MetaTrader 4 TraderNovo:

CAPÍTULO III MENÚS DEL TURBO PASCAL. File Edit Search Run Compile Debug Tools Options Windows Help [ ] NONAME.PAS

Herramientas de programación C/C++

Manual de instalación módulo Prestashop. TPV Virtual CECA

BREVE DESCRIPCIÓN DEL ENTORNO DE PROGRAMACIÓN DE VISUAL LISP

Tabla de interrupciones

MANUAL DE ADMINISTRADOR

MÓDULO DE ASISTENCIA

Preguntas frecuentes LW105H

Definición Es una directiva using que ayuda al compilador a localizar una clase que se usa en la aplicación.

Curso Completo de Visual Basic 6.0

GUIA RÁPIDA: ACTIVACIÓN MIMOV Y USO DE LA PLATAWORMA

MANUAL WEBMAIL DolibarelERPDefinitivo

HERRAMIENTAS DEL SISTEMA PRESENTADO POR: NELSON PLAZAS ANDRES CHARRY

WINDOWS 98/Me CONFIGURACIÓN DE WINDOWS III. Sistema

Práctica de laboratorio: Configuración de copia de seguridad de datos y recuperación en Windows 7 y Vista

INSTALACIÓN DE VISUAL STUDIO 2010

[DESCRIPCIÓN DEL ENTORNO DE DESARROLLO: ]

CIERRE CONTABLE. Primero comprobaremos que en Utilidades-Configuración esté el año contable que vamos a cerrar y realizaremos una copia de seguridad.

Funciones básicas del depurador

MANUAL APLICACIÓN RESTAURANTMENU MOVIL Y ESCRITORIO

Manual de Usuario OIM-M3

Autores: José Manuel Marcos y David Romero MANUAL DE TEMPUS

1. DESCARGA DE LA APLICACIÓN

APLICACIÓN INVENTARIO de PAPELERAS

Servicio de Informática Vicerrectorado de Tecnologías de la Información y la Comunicación

01.1 Instalación de Android Studio

Fundamentos de Ordenadores. Depurar programas usando Nemiver

FACULTAD DE INGENIERÍA

Planilla de cálculo. Módulo III - OpenOffice.org Calc

2.2. Simulación lógica de un circuito electrónico digital: puerta lógica 74LS00.

Manual de Usuario. Calendario. Procesos

Botones de comando. Botones de comando. 1. Seleccionar el botón de comando y dimensionar sobre la pantalla.

Informática General Cátedra: Valeria Drelichman Pedro Paleo Leonardo Nadel Norma Morales

Introducción Arduino TPR 3º ESO

SIMULADOR EMPRESARIAL

Acceso a datos desde PHP (avanzado) Múltiples submits a PHP, control, gestión de errores, visualización, jquery, datatables, AJAX

ENTORNO DE DESARROLLO Y COMPILACIÓN DE PELLES C

GUIA DE USO SOLUPYME Saas. Guia de uso rápida de SOLUPYME Saas, que permite una fácil manejabilidad del programa y sus funcionalidades.

ANEXO. Primeros pasos CoDeSys Proceso de Instalación Inicio en CoDeSys Cambio del idioma Creación del proyecto...

INGENIERÍA DEL SOFTWARE II Práctica 1. Univ. Cantabria Fac. de Ciencias Carlos Blanco, Juan Hernández

Manual de Usuario. Disco Virtual en Red

MÓDULOS B-MOTICS ESCLAVOS DE MODBUS. Bielsa electrónica S.L. Ref: mblogix1.0es.pdf

Curso de Delphi (y VI)

Servicios ios. Sesión 3: Background e hilos. Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

Integración de Toolchain sobre IDE gráfico basado en Eclipse

INSTALACIÓN PROGRAMA FACILAUTO FORMACIÓN

GRUPO TECNOLOGICO NIT: Fecha de creación 27/02/2017 Versión 1.0

Transcripción:

Sesión 5: Depuración y pruebas 2012-2013 Depto. Ciencia de la Computación e IA

Índice de contenidos Trazas de seguimiento NSLogs Asserts El depurador de XCode Breakpoints: Uso y tipos Acciones disponibles en depuración Objetos Zombie Qué son y para qué sirven? Configuración en XCode Instruments Activar Instruments Encontrando fugas de memoria Pruebas de unidad 2

Trazas de segumiento Trazas de seguimiento NSLogs Asserts 3

NSLogs (1) Framework: FoundationKit Equivalente a: fprintf(...). Modificar el código fuente Mostrar en consola el estado de variables Parámetro NSString Uso de especificadores de formato: %@: Cadenas de texto y objetos. %i: Enteros (integer) %d: Decimal (float) %.02f: Número con dos decimales %ld: Entero Long %p: Puntero, referencia a un objeto. Otros... 4

NSLogs (2) Especificador de texto para mostrar la descripción de un objeto: NSLog(@"Descripción del objeto window: %@", self.window); Mostrará la información más relevante del elemento window. Otros objetos: NSString NSDictionary... 5

Trazas de seguimiento Trazas de siguimiento NSLogs Asserts 6

Asserts (1) Usado por los programadores para comprobar partes del código: Valores de variables. Condiciones. Usar sólo durante el desarrollo. Si falla el Assert lanzará una excepción. : NSAssert y NSAssert2. NSAssert es equivalente a assert NSAssert2 permite más parámetros en la descripción. 7

Asserts (2) Uso de NSAsserts: // Uso de la macro assert() assert(valor < maximovalor && @"El valor es demasiado grande!"); // Uso de NSAssert2 NSAssert2(valor < maximovalor, @"El valor %i es demasiado grande (max.:%i)!", valor, maximovalor); 8

Asserts (3) Desactivar los asserts para compilar el proyecto para distribución (release). Directiva NS_BLOCK_ASSERTIONS 9

El depurador de XCode El depurador de XCode Breakpoints: Uso y tipos Acciones disponibles en depuración 10

Breakpoints Internamente: GDB, el depurador de GNU. Aunque podemos cambiarlo a LLDB. Podremos usar la línea de comandos: http://www.gnu.org/s/ gdb/documentation/ Sistema mejorado con XCode 4. Ejecutar el proyecto en modo depuración (debug). Activar breakpoints desde XCode 11

Breakpoints: creación en XCode (1) Pulsar el número de línea en donde queremos activarlo. Estado de un breakpoint: Activado: Color azul. Desactivado: Color azul semitransparente. Navegador de breakpoints: 12

Breakpoints: creación en XCode (2) Breakpoints condicionales: Opción de activar un breakpoint si cumple una condición: ctrl + click en un breakpoint. 13

Breakpoints: Tipos Además del breakpoint común existen dos tipos más: Exception Breakpoint Symbolic Breakpoint. Se crean desde el botón (+) de la parte inferior del navegador de breakpoints. 14

Exception Breakpoint Se ejecuta cada vez que salta una excepción en la ejecución. Detiene la ejecución en el bloque catch o en throw. Acción personalizable (log o sonido). Opción de continuar la ejecución. 15

Symbolic Breakpoint Se ejecuta cuando una función o método específico se ejecuta. El campo símbolo puede ser: El nombre de un método: pathsmatchingextensions: El método de una clase: [SKTLine drawhandlesinview] Un nombre de una función: _objc_msgforward Acción personalizable (log o sonido). Opción de continuar la ejecución. 16

El depurador de XCode El depurador de XCode Breakpoints: Uso y tipos Acciones disponibles en depuración 17

Acciones disponibles en depuración (1) Analizar los valores de las variables. Crear un watchpoint: breakpoint en variable. La ejecución se detendrá cuando el valor de la variable cambie. Usar la línea de comandos. Comandos de GDB. Editar el listado de breakpoints. Podemos desactivar, activar, borrar breakpoints durante la depuración. Cambiar la localización de la aplicación (simular GPS). 18

Acciones disponibles en depuración (2) Continuar hasta la siguiente línea in entrar en funciones (step over, n) Continuar hasta el siguiente breakpoint (continue, c) Continuar hasta la siguiente línea entrando en las funciones (step into, s) Empezar de nuevo o abortar la ejecución (finish, f) 19

Objetos Zombie Objetos Zombie Qué son y para qué sirven? Configuración en XCode 20

Qué son y para qué sirven? (1) Parámetro de compilación. Proporciona más detalles cuando se producen excepciones relacionadas con accesos a memoria. Os suena EXC_BAD_ACCESS? Nombre parámetro: NSZombieEnabled. 21

Qué son y para qué sirven? (2) Ejemplo: Liberamos de memoria una variable que ya hemos liberado anteriormente. Sin usar objetos Zombie: Usando objetos Zombie: 22

Objetos Zombie Objetos Zombie Qué son y para qué sirven? Configuración en XCode 23

Configuración en XCode Activar: Edit Scheme > Diagnostics > Enable Zombie Objects. 24

Instruments Instruments Activar Instruments Encontrando fugas de memoria 25

Activar Instruments (1) Aplicación adicional al depurador de XCode. Se instala junto con XCode. Varias herramientas disponibles divididas por el componente del sistema a analizar: Memoria, CPU y Sistema de ficheros. Objetivo: analizar el uso de la memoria y comprobar si existen fugas de memoria (memory leaks). 26

Activar Instruments (2) 27

Activar Instruments (3) Menú principal de XCode: Product > Profile. Podemos analizar la ejecución del simulador o del dispositivo. Para analizar las fugas de memoria seleccionamos las herramientas Allocations y Leaks. Allocations -> Analizar el uso de la memoria. Leaks -> Analizar fugas de memoria. 28

Herramienta Allocations Allocations: En azul las reservas de memoria que se van produciendo. Listado de objetos que van reservando memoria ordenados por la cantidad que reservan. 29

Herramienta Leaks Leaks: En rojo las fugas de memoria (objetos que han reservado memoria y la han liberado). Si seleccionamos una fuga de memoria accederemos al código fuente en donde se genera esta fuga. Podemos corregir las fugas de memoria desde Instruments cambiando el código fuente. 30

Encontrando fugas de memoria Instruments Activar Instruments Encontrando fugas de memoria 31

Encontrando fugas de memoria (1) Pantalla principal de Leaks en funcionamiento: 32

Encontrando fugas de memoria (2) Configuración de detección de Leaks cada cierto tiempo: 33

Encontrando fugas de memoria (3) Análisis de la traza de una fuga de memoria: 34

Pruebas de unidad Pruebas de unidad 35

Pruebas de unidad Objetivo: probar el funcionamiento de un módulo o un método concreto y reducir el número de fallos. XCode integra la generación de tests de unidad. Un grupo de tests de unidad (test bundle) contiene varios tests. Un test bundle prueba una funcionalidad de la aplicación. Framework: SenTestingKit 36

Creando tests de unidad (1) Al crear un proyecto en XCode podemos incluir tests de unidad. 37

Creando tests de unidad (2) Target específico en XCode: 38

Creando tests de unidad (3) Macros disponibles en el framework SenTestingKit Método setup: crear las variables y configurarlas. Método teardown: liberar los objetos de memoria. - (void)testmitestdeprueba {... // Configuración inicial (setup) ST... // Asserts...! // Liberación de memoria y variables auxiliares } - (void)setup { objeto_test = [[[MiClase alloc] init] retain]; STAssertNotNil(objeto_test, @"No se puede crear un objeto de la clase MiClase"); } - (void)teardown { [objeto_test release]; } 39

Algunas macros... STFail: Falla el test. STAssertEqualObjects: Falla cuando dos objetos no son iguales. STAssertEquals: Falla cuando dos valores no son iguales. STAssertNil: Falla cuando la expresión no es nil. STAssertNotNil: Falla cuando la expresión es nil. STAssertTrue: Falla cuando la expresión no es true. STAssertFalse: Falla cuando la expresión no es false. STAssertThrows: Falla cuando la expresión no lanza una excepción. etc... https://developer.apple.com/library/ios/#documentation/developertools/ Conceptual/UnitTesting/AB-Unit-Test_Result_Macro_Reference/ result_macro_reference.html 40

Preguntas...? 41