2011-02-10 18 views
5

Mi objetivo es depurar (paso a paso) el script sample.pl a continuación.¿Cómo puedo ver los valores de las variables de un rastro de Perl?

El problema: no obtengo los valores reales de las variables ($ top_number, $ x, $ total).

Mi pregunta: ¿cómo ver los valores enteros reales de ($ top_number, $ x, $ total) desde la salida de rastreo?

¿Qué debe cambiar en perl -d:Trace para obtener números, y no: $ top_number, $ x, $ total?

Ejemplo de la salida de rastreo:

[[email protected] /tmp]# perl -d:Trace ./sample.pl 
>> ./sampl.pl:9: $top_number = 100; 
>> ./sampl.pl:10: $x = 1; 
>> ./sampl.pl:11: $total = 0; 
>> ./sampl.pl:12: while ($x <= $top_number) { 
>> ./sampl.pl:13:  $total = $total + $x; # short form: $total += $x; 
>> ./sampl.pl:14:  $x += 1;    # do you follow this short form? 
>> ./sampl.pl:13:  $total = $total + $x; # short form: $total += $x; 
>> ./sampl.pl:14:  $x += 1;    # do you follow this short form? 
>> ./sampl.pl:13:  $total = $total + $x; # short form: $total += $x; 
>> ./sampl.pl:14:  $x += 1;    # do you follow this short form? 
. 
. 

[[email protected] /tmp]#more sample.pl script 

#!/usr/bin/perl 


$top_number = 100; 
$x = 1; 
$total = 0; 
while ($x <= $top_number) { 
    $total = $total + $x; # short form: $total += $x; 
    $x += 1;    # do you follow this short form? 
} 

print "The total from 1 to $top_number is $total\n"; 

Respuesta

7

supongo que usted quiere ver los valores de las variables $x y $total para cada iteración a través del bucle. No hay ninguna indicación del POD para Devel::Trace que pueda hacer eso.

Sin embargo, Devel::DumpTrace puede.

perl -d:DumpTrace ./sample.pl 

>>>>> hw.pl:7:  $top_number:100 = 100; 
>>>>> hw.pl:8:  $x:1 = 1; 
>>>>> hw.pl:9:  $total:0 = 0; 
>>>>> hw.pl:10:  while ($x:1 <= $top_number:100) { 
>>>>> hw.pl:11:   $total:1 = $total:0 + $x:1; # short form: $total:0 += $x:1; 
>>>>> hw.pl:12:   $x:2 += 1;    # do you follow this short form? 
>>>>> hw.pl:11:   $total:3 = $total:1 + $x:2; # short form: $total:1 += $x:2; 
>>>>> hw.pl:12:   $x:3 += 1;    # do you follow this short form? 
>>>>> hw.pl:11:   $total:6 = $total:3 + $x:3; # short form: $total:3 += $x:3; 
+1

'Devel :: DumpTrace' fue lanzado hace unos días. Sea amable e informe cualquier error que encuentre. :-) – mob

+0

@Mob no se preocupe Voy a hacer eso – jon

+0

@ hola de nuevo me sale el error: perl -d: DumpTrace ./sampl.pl ¿No puede encontrar PadWalker.pm en @INC? por qué – jon

0

Eche un vistazo a Variable::Magic. Podría ser una solución para el "seguimiento" variable.

+0

pero esto significa que necesito ejecutar con perl -d? de todas formas ? – jon

Cuestiones relacionadas