26
Depuración de código con PHP Ramón Muñiz Sánchez

Depuración de código con PHP - Grupo de Procesamiento del Lenguaje …gplsi.dlsi.ua.es/asignaturas/pi/pi-old/fitxers/expos/jaf/... · 2005-11-30 · Al programar en cualquier lenguaje

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Depuración de código con PHP - Grupo de Procesamiento del Lenguaje …gplsi.dlsi.ua.es/asignaturas/pi/pi-old/fitxers/expos/jaf/... · 2005-11-30 · Al programar en cualquier lenguaje

Depuración de código con PHP

Ramón Muñiz Sánchez

Page 2: Depuración de código con PHP - Grupo de Procesamiento del Lenguaje …gplsi.dlsi.ua.es/asignaturas/pi/pi-old/fitxers/expos/jaf/... · 2005-11-30 · Al programar en cualquier lenguaje

2

INDICE

Introducción.

Funciones internas de PHP.

Funciones externas de PHP.

Referencias

Fin

Page 3: Depuración de código con PHP - Grupo de Procesamiento del Lenguaje …gplsi.dlsi.ua.es/asignaturas/pi/pi-old/fitxers/expos/jaf/... · 2005-11-30 · Al programar en cualquier lenguaje

3

Introducción

Al programar en cualquier lenguaje de programación se pueden cometer errores.

La mayoría de las veces, suelen ser errores de fácil solución.

Aunque a veces,no tienen solución trivial y necesitamos conocer los valores de nuestras variables para corregirlo.

Page 4: Depuración de código con PHP - Grupo de Procesamiento del Lenguaje …gplsi.dlsi.ua.es/asignaturas/pi/pi-old/fitxers/expos/jaf/... · 2005-11-30 · Al programar en cualquier lenguaje

4

Introducción

Para ello existen dos tipos de “herramientas” de depuración.

En este caso vamos a clasificarlas en dos conjuntos.– Herramientas proporcionadas por el lenguaje.– Funciones externas.

Page 5: Depuración de código con PHP - Grupo de Procesamiento del Lenguaje …gplsi.dlsi.ua.es/asignaturas/pi/pi-old/fitxers/expos/jaf/... · 2005-11-30 · Al programar en cualquier lenguaje

5

Funciones internas de PHP

Son aquellas funciones que proporciona PHP que se pueden usar para depurar código.Estas funciones permiten conseguir información sobre las variables que usamos:– print ().– print_r().– var_dump().– gettype()– is_string(),is_integer(),is_array(),etc.

Page 6: Depuración de código con PHP - Grupo de Procesamiento del Lenguaje …gplsi.dlsi.ua.es/asignaturas/pi/pi-old/fitxers/expos/jaf/... · 2005-11-30 · Al programar en cualquier lenguaje

6

print

print();– Función que añade datos a la respuesta HTML del

script.– Podemos usarla para generar código HTML con

datos de nuestras variables.– Uso:

print (“$nombre_variable”)

Page 7: Depuración de código con PHP - Grupo de Procesamiento del Lenguaje …gplsi.dlsi.ua.es/asignaturas/pi/pi-old/fitxers/expos/jaf/... · 2005-11-30 · Al programar en cualquier lenguaje

7

print_r

Función que imprime información sobre una variable

Uso:– print_r ($variable,[bool devolver])

$variable: variable a mostrar

bool devolver: si es true, devuelve la salida y a false, la imprime

Page 8: Depuración de código con PHP - Grupo de Procesamiento del Lenguaje …gplsi.dlsi.ua.es/asignaturas/pi/pi-old/fitxers/expos/jaf/... · 2005-11-30 · Al programar en cualquier lenguaje

8

var_dump()

Devuelve el tipo de la variable y su contenido

Uso:– var_dump($variable);

Page 9: Depuración de código con PHP - Grupo de Procesamiento del Lenguaje …gplsi.dlsi.ua.es/asignaturas/pi/pi-old/fitxers/expos/jaf/... · 2005-11-30 · Al programar en cualquier lenguaje

9

gettype ()

Instrucción que devuelve una cadena con el tipo de la variable que le pasemos.

Uso:– gettype($variable)

Page 10: Depuración de código con PHP - Grupo de Procesamiento del Lenguaje …gplsi.dlsi.ua.es/asignaturas/pi/pi-old/fitxers/expos/jaf/... · 2005-11-30 · Al programar en cualquier lenguaje

10

is_string(),is_integer(),is_array(),...

Funciones equivalentes a gettype().

Mayor velocidad que gettype().

Devuelven true si son del tipo especificado

is_integer(),is_int(), is_bool(),is_float(),

is_double(),is_array(),is_string(),etc...

Uso:– is_string($variable)

Page 11: Depuración de código con PHP - Grupo de Procesamiento del Lenguaje …gplsi.dlsi.ua.es/asignaturas/pi/pi-old/fitxers/expos/jaf/... · 2005-11-30 · Al programar en cualquier lenguaje

11

Ejemplo de uso

ejemplo de uso

Page 12: Depuración de código con PHP - Grupo de Procesamiento del Lenguaje …gplsi.dlsi.ua.es/asignaturas/pi/pi-old/fitxers/expos/jaf/... · 2005-11-30 · Al programar en cualquier lenguaje

12

Funciones externas de PHP

Estas funciones aumentan la capacidad de depuración, permitiendo comprobar los scripts sin necesidad de mostrar datos en HTML.

Algunos de ellos:– APD– Gubed– Xdebug– ZendStudio

Page 13: Depuración de código con PHP - Grupo de Procesamiento del Lenguaje …gplsi.dlsi.ua.es/asignaturas/pi/pi-old/fitxers/expos/jaf/... · 2005-11-30 · Al programar en cualquier lenguaje

13

APD

Conjunto de funciones que realizan trazas de los scripts.

Es necesario instalar la librería en el servidor.

Funciona haciendo llamadas a las funciones implementadas por la librería.

Multiplataforma.

Gratuito

Page 14: Depuración de código con PHP - Grupo de Procesamiento del Lenguaje …gplsi.dlsi.ua.es/asignaturas/pi/pi-old/fitxers/expos/jaf/... · 2005-11-30 · Al programar en cualquier lenguaje

14

APD. Uso(I)

1. apd_set_pprof_trace(); Función que inicia la depuración del script.

2. Ejecución del script.

3. Revisión del fichero “apd.dumpdir/pprof_pid.ext.”

Page 15: Depuración de código con PHP - Grupo de Procesamiento del Lenguaje …gplsi.dlsi.ua.es/asignaturas/pi/pi-old/fitxers/expos/jaf/... · 2005-11-30 · Al programar en cualquier lenguaje

15

APD.Uso (II)

Resultado de usar APD

Page 16: Depuración de código con PHP - Grupo de Procesamiento del Lenguaje …gplsi.dlsi.ua.es/asignaturas/pi/pi-old/fitxers/expos/jaf/... · 2005-11-30 · Al programar en cualquier lenguaje

16

Gubed

Programa de depuración de PHP

Necesita un servidor con PHP.

Existe una implementación como plugin de Mozilla

Permite depuración interactiva.

Gratuito.

Multiplataforma.

Page 17: Depuración de código con PHP - Grupo de Procesamiento del Lenguaje …gplsi.dlsi.ua.es/asignaturas/pi/pi-old/fitxers/expos/jaf/... · 2005-11-30 · Al programar en cualquier lenguaje

17

Gubed. Uso

Ejecución de script dentro del programa

Posibilidad de colocar paradas de ejecución.

Ejecutar paso a paso o por bloques el codigo.

Mostrar valores de las variables.

Page 18: Depuración de código con PHP - Grupo de Procesamiento del Lenguaje …gplsi.dlsi.ua.es/asignaturas/pi/pi-old/fitxers/expos/jaf/... · 2005-11-30 · Al programar en cualquier lenguaje

18

Gubed.Ejemplo

Page 19: Depuración de código con PHP - Grupo de Procesamiento del Lenguaje …gplsi.dlsi.ua.es/asignaturas/pi/pi-old/fitxers/expos/jaf/... · 2005-11-30 · Al programar en cualquier lenguaje

19

Xdebug

Extensión que permite la traza de las llamadas a funciones.

Es necesario instalación en servidor PHP

Muestra los resultados de la depuración en HTML.

Page 20: Depuración de código con PHP - Grupo de Procesamiento del Lenguaje …gplsi.dlsi.ua.es/asignaturas/pi/pi-old/fitxers/expos/jaf/... · 2005-11-30 · Al programar en cualquier lenguaje

20

Xdebug. Uso

xdebug_start_trace(); Función para iniciar la traza.

Añadir funciones de Xdebug que devuelvan datos sobre el script.

Ejecutar script en navegador.

Muestra el resultado de la traza en HTML o en fichero de texto.

Page 21: Depuración de código con PHP - Grupo de Procesamiento del Lenguaje …gplsi.dlsi.ua.es/asignaturas/pi/pi-old/fitxers/expos/jaf/... · 2005-11-30 · Al programar en cualquier lenguaje

21

Xdebug.Ejemplo

Ejemplo depuración en HTML

Ejemplo depuración en fichero de texto

Page 22: Depuración de código con PHP - Grupo de Procesamiento del Lenguaje …gplsi.dlsi.ua.es/asignaturas/pi/pi-old/fitxers/expos/jaf/... · 2005-11-30 · Al programar en cualquier lenguaje

22

ZendStudio

IDE de desarrollo PHP.

Incorpora su propio depurador.

No necesita instalar nada en el servidor.

No necesita añadir código adicional al script.

Page 23: Depuración de código con PHP - Grupo de Procesamiento del Lenguaje …gplsi.dlsi.ua.es/asignaturas/pi/pi-old/fitxers/expos/jaf/... · 2005-11-30 · Al programar en cualquier lenguaje

23

ZendStudio. Uso

En el mismo IDE, se ponen los puntos de parada de la ejecución.

Se van pulsando los botones de arriba/abajo para ir pasando la ejecución.

Se muestran los valores de las variables y el tipo que son.

Page 24: Depuración de código con PHP - Grupo de Procesamiento del Lenguaje …gplsi.dlsi.ua.es/asignaturas/pi/pi-old/fitxers/expos/jaf/... · 2005-11-30 · Al programar en cualquier lenguaje

24

ZendStudio.Ejemplo

Ejemplo depuración con ZendStudio.

Page 26: Depuración de código con PHP - Grupo de Procesamiento del Lenguaje …gplsi.dlsi.ua.es/asignaturas/pi/pi-old/fitxers/expos/jaf/... · 2005-11-30 · Al programar en cualquier lenguaje

26

Fin

¿Preguntas?