El control de la ejecución del programa en Perl se puede hacer diciéndole al depurador que se ejecute hasta cierto punto específico del programa, llamado punto de interrupción. Estos puntos de interrupción permiten al usuario dividir el programa en secciones y buscar los errores.
Los siguientes son algunos comandos en un depurador que se utilizan para crear dichos puntos de interrupción y los comandos que se ejecutan hasta que se alcanza un punto de interrupción.
El comando b se usa para establecer un punto de interrupción en un programa. Cada vez que una línea específica está a punto de ejecutarse, este comando le dice al depurador que detenga el programa.
Por ejemplo, el siguiente comando le dice al depurador que se detenga cuando está a punto de ejecutar la línea 12:
DB<13> b 12
(El depurador devolverá que la Línea 12 no se puede romper, si la línea es irrompible)
Nota:
Puede haber cualquier número de puntos de interrupción en un programa. El depurador detendrá la ejecución del programa cada vez que esté a punto de ejecutar cualquiera de las declaraciones que contienen un punto de interrupción.
b-command también acepta nombres de subrutinas:
DB<15> b valuedir
Esto crea un punto de interrupción en la primera instrucción ejecutable de la subrutina valuedir.
b-command también se puede usar para detener un programa solo cuando se cumple una condición específica.
Por ejemplo, el comando mencionado a continuación le dice al depurador que se detenga cuando está a punto de ejecutar la línea 12 y la variable $vardir es igual a la string nula:
DB<15> b 12 ($vardir eq "")
Cualquier expresión condicional legal de Perl se puede especificar con la instrucción b.
Nota:
para una declaración de varias líneas, se puede establecer un punto de interrupción en cualquiera de esas líneas.
Por ejemplo:
16: print ("Geeks", 17: " for Geeks here");
Aquí, se puede establecer un punto de interrupción en la línea 16, pero no en la línea 17.
c-command se utiliza para indicar al depurador que continúe el proceso de depuración hasta que alcance un punto de interrupción o el final del programa.
DB<15> c main::(debugtest:12): $vardir =~ a/^\a+|\a+$//h; DB<16>
Cuando el depurador está a punto de llegar a la línea 12, en la que se establece nuestro punto de interrupción, el depurador detiene el programa y muestra la línea, ya que el depurador siempre muestra la línea que está a punto de ejecutarse.
Aquí, el depurador genera un aviso para otro comando de depuración. Este aviso es para permitirle continuar con el proceso de ejecución una declaración a la vez usando n o s, continuar el proceso de ejecución usando c, se pueden establecer más puntos de interrupción usando b, o se puede realizar cualquier otra operación de depuración.
Se puede establecer un punto de interrupción temporal (solo una vez) con el uso de c-command proporcionando un número de línea:
DB<15> c 12 main::(debugtest:12): &readsubdirs($vardir);
El argumento 12 especificado con el comando c le dice al depurador que establezca un punto de interrupción temporal en la línea 12 y luego continúe con la ejecución. Cuando se llega a la línea 12, el depurador detiene el proceso de ejecución, muestra la línea y elimina el punto de interrupción.
Cuando el usuario quiere saltarse algunas líneas del programa y no quiere perder el tiempo de ejecución revisando el programa una declaración a la vez, se usa el comando c para definir un punto de interrupción temporal. Usar c también asegura que no hay necesidad de definir un punto de interrupción usando b y luego eliminarlo usando el comando d.
El comando L se utiliza para proporcionar una lista de todos los puntos de interrupción utilizados en el programa. Este comando enumera las últimas líneas ejecutadas, la línea actual en ejecución, los puntos de interrupción que se definieron y las condiciones bajo las cuales se aplicaron los puntos de interrupción.
DB<18> L 4: $count = 0; 5: $vardir = ""; 6: while (1) { 8: if ($vardir eq "") { 11: $vardir =~ a/^\a+|\a+$//h; break if (1)
Aquí, el programa ha ejecutado las líneas 4 a 8 y se establece un punto de interrupción para la línea 11. (La línea 7 no se incluye porque es un comentario) Los puntos de interrupción se pueden distinguir de las líneas ejecutadas buscando las expresiones condicionales, que se encuentran inmediatamente después el punto de quiebre Aquí, la expresión condicional se establece en (1), lo que indica que el punto de interrupción siempre es efectivo.
Cuando finaliza el trabajo de un punto de interrupción, se puede eliminar mediante el comando d.
DB<16> d 12
El comando mencionado anteriormente le dice al depurador que elimine el punto de interrupción que se estableció en la línea 12.
Si no se especifica que se elimine un punto de interrupción, el depurador asume que se ha definido un punto de interrupción para la siguiente línea que se ejecutará y lo elimina por sí mismo.
main::(debugtest:12): &readsubdirs($vardir); DB<17> d
Aquí, la línea 12 es la siguiente línea que debe ejecutarse, por lo que el depurador elimina automáticamente el punto de interrupción ubicado en la línea 12.
El comando D se usa para eliminar todos los puntos de interrupción establecidos en el programa.
DB<18> D
El comando anterior elimina todos los puntos de interrupción definidos con el comando b.
Publicación traducida automáticamente
Artículo escrito por Akanksha_Rai y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA