Página 1 de 1

Seguir una traza

NotaPublicado: 2010-01-26 08:43 @404
por panterozo
Hola a todos uds.

Este es mi primer post, y espero poder contribuir con esta comunidad. Bueno, al grano...

Tengo un proyecto en mis manos, donde se utilizan sockets. Lo hago correr, pero en algún lugar genera un error. Me gustaría poder seguirle la traza, pero al ojo es muy complicado y me pierdo. Si alguien tuviese alguna idea de algún programa que guarde la información ya sea por el lado del cliente o por el lado del server... ¿O quizás Perl tiene alguna forma de seguir la traza...? Recuerdo cuando programaba en C con Turbo C, me permitía ir línea por línea, observar cuándo salía de los ciclos, cuándo saltaba a funciones y procedimientos, etc...

Espero se entienda y me pudiesen echar una mano...

Muchas gracias ;)

Re: Seguir una traza

NotaPublicado: 2010-01-26 08:51 @410
por explorer
Bienvenido a los foros de Perl en Español, panterozo.

Le ejecución paso a paso de un programa la puedes hacer con el depurador integrado.

Ejecuta, desde la línea de órdenes: perl -d programa.pl

Re: Seguir una traza

NotaPublicado: 2010-01-26 08:57 @414
por panterozo
Tengo este sencillo programa para sumar dos números:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
print "Ingrese numero \n";
$valor = <STDIN>;
print "Ingrese segundo numero \n";
$valor1 = <STDIN>;
$valor=$valor+$valor1;
print"La suma es: $valor\n";
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4


y la consola...

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
$ perl -d ./fichero.pl

Loading DB routines from perl5db.pl version 1.3
Editor support available.

Enter h or `h h' for help, or `man perldebug' for more help.

main::(./fichero.pl:2): print "Ingrese numero \n";
   DB<1> 5
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


y ahí queda :s...
(¿Es posible seguir una traza a una comunicación por socket?)

Gracias

Re: Seguir una traza

NotaPublicado: 2010-01-26 10:01 @459
por explorer
Claro... no le has dicho al depurador que continúe.

Haz lo que te dice: pulsa 'h' para obtener ayuda del funcionamiento del depurador.

En cuanto a la comunicación por socket, yo siempre usaba Log::Log4perl para ir sacando los eventos que ocurrían.

Re: Seguir una traza

NotaPublicado: 2010-01-26 12:32 @564
por salva
panterozo escribiste:Tengo un proyecto en mis manos, donde se utilizan sockets...


Además de la recomendación que te hace explorer de usar el depurador, cuando se trata de sockets, a veces otras soluciones resultan más convenientes:

  • realiza el traceo a nivel del sistema operativo para ver qué es lo que pasa a bajo nivel. Por ejemplo, en Linux, utiliza strace:
    Sintáxis: [ Descargar ] [ Ocultar ]
    Using bash Syntax Highlighting
    $ strace -s 1024 perl script.pl
    Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

    Este método es sobre todo útil cuando no sabes dónde está el problema, si en el servidor o en el cliente.
  • utiliza un programa como wireshark que captura las conexiones de red y las recompone y además tiene soporte para los protocolos más comunes.
  • instrumentaliza tu código de manera que cuando cierta variable tenga un valor verdadero (p. ej. $Mi::Modulo::debug = 1) haga un volcado en hexadecimal de todo lo que entra y sale por la red.

Re: Seguir una traza

NotaPublicado: 2010-03-29 14:38 @651
por panterozo
El debug fue lo mejor ;)

Gracias