InglésFrancésEspañol

icono de página de OnWorks

perldebug - Online en la nube

Ejecute perldebug en el proveedor de alojamiento gratuito de OnWorks sobre Ubuntu Online, Fedora Online, emulador en línea de Windows o emulador en línea de MAC OS

Este es el comando perldebug que se puede ejecutar en el proveedor de alojamiento gratuito de OnWorks utilizando una de nuestras múltiples estaciones de trabajo en línea gratuitas, como Ubuntu Online, Fedora Online, emulador en línea de Windows o emulador en línea de MAC OS.

PROGRAMA:

NOMBRE


perldebug - Depuración de Perl

DESCRIPCIÓN


En primer lugar, ¿ha intentado utilizar el -w ¿cambiar?

Si es nuevo en el depurador de Perl, es posible que prefiera leer perldebtut, que es un tutorial
introducción al depurador.

El Perl Depurador


Si invoca a Perl con el -d Switch, su secuencia de comandos se ejecuta bajo el depurador de fuentes de Perl.
Esto funciona como un entorno interactivo de Perl, solicitando comandos del depurador que permitan
examina el código fuente, establece puntos de interrupción, obtiene retrocesos de pila, cambia los valores de
variables, etc. Esto es tan conveniente que a menudo se activa el depurador por sí solo
solo para probar los constructos de Perl de forma interactiva para ver qué hacen. Por ejemplo:

$perl -d -e 42

En Perl, el depurador no es un programa separado como suele ser en el típico
entorno compilado. En cambio, el -d la bandera le dice al compilador que inserte la fuente
información en los árboles de análisis que está a punto de entregar al intérprete. Eso significa
su código primero debe compilarse correctamente para que el depurador funcione en él. Entonces cuando el
intérprete se inicia, precarga un archivo de biblioteca Perl especial que contiene el depurador.

El programa se detendrá un Derecho antes la primera declaración ejecutable en tiempo de ejecución (pero vea a continuación
con respecto a las declaraciones en tiempo de compilación) y le pedirá que ingrese un comando de depuración. Contrariamente a
expectativas populares, siempre que el depurador se detiene y le muestra una línea de código, siempre
muestra la línea que es del ejecutar, en lugar del que acaba de ejecutar.

Cualquier comando no reconocido por el depurador se ejecuta directamente ("eval" 'd) como código Perl en
el paquete actual. (El depurador usa el paquete DB para mantener su propio estado
información.)

Tenga en cuenta que dicha "eval" está limitada por un ámbito implícito. Como resultado, cualquier nuevo
La variable léxica o cualquier contenido de búfer de captura modificado se pierde después de eval. los
El depurador es un entorno agradable para aprender Perl, pero si experimentas interactivamente usando
material que debe estar en el mismo alcance, colóquelo en una línea.

Para cualquier texto ingresado en el indicador del depurador, los espacios en blanco iniciales y finales son primero
despojado antes de su posterior procesamiento. Si un comando del depurador coincide con alguna función en
su propio programa, simplemente preceda a la función con algo que no parezca un
comando del depurador, como un ";" inicial o quizás un "+", o envolviéndolo con
paréntesis o llaves.

llamar los Depurador
Hay varias formas de llamar al depurador:

perl -d nombre_programa
En el programa dado identificado por "nombre_programa".

Perl -d -e 0
Proporcione de forma interactiva una "expresión" arbitraria utilizando "-e".

perl -d: ptkdb nombre_programa
Depura un programa dado a través de la GUI "Devel :: ptkdb".

perl -dt nombre_programa_hilo
Depura un programa dado usando hilos (experimental).

Depurador Comandos
El depurador interactivo comprende los siguientes comandos:

h Imprime un mensaje de ayuda resumido

h [comando] Imprime un mensaje de ayuda para el comando del depurador dado.

hh El argumento especial de "hh" produce toda la página de ayuda, que es bastante
de largo.

Si la salida del comando "hh" (o cualquier comando, para el caso) se desplaza
más allá de su pantalla, preceda el comando con un símbolo de tubería inicial para que sea
ejecutar a través de su buscapersonas, como en

DB> | hh

Puede cambiar el buscapersonas que se utiliza mediante el comando "o pager = ...".

p expr Lo mismo que "print {$ DB :: OUT} expr" en el paquete actual. En particular,
porque esta es solo la función "imprimir" de Perl, esto significa que los datos anidados
las estructuras y los objetos no se vuelcan, a diferencia del comando "x".

El identificador de archivo "DB :: OUT" se abre para / dev / tty, independientemente de donde STDOUT pueda
ser redirigido a.

x [profundidad máxima] expr
Evalúa su expresión en el contexto de lista y arroja el resultado en un bonito
moda impresa. Las estructuras de datos anidadas se imprimen de forma recursiva, a diferencia de
la función "imprimir" real en Perl. Al descargar hashes, probablemente
prefiero 'x \% h' en lugar de 'x% h'. Consulte Dumpvalue si desea hacer esto
tú mismo.

El formato de salida se rige por las múltiples opciones descritas en
"Opciones configurables".

Si se incluye "maxdepth", debe ser un número N; el valor se tira
only N niveles de profundidad, como si la opción "dumpDepth" se hubiera establecido temporalmente en
N.

V [paquete [vars]]
Mostrar todas (o algunas) variables en el paquete (por defecto es "principal") usando un dato
pretty-printer (los hash muestran sus claves y valores para que vea qué es qué,
los caracteres de control se imprimen, etc.). Asegúrate de no poner el
especificador de tipo (como "$") allí, solo los nombres de los símbolos, como este:

Línea de nombre de archivo V DB

Utilice "~ patrón" y "! Patrón" para expresiones regulares positivas y negativas.

Esto es similar a llamar al comando "x" en cada var aplicable.

X [vars] Igual que "V currentpackage [vars]".

y [nivel [vars]]
Mostrar todas (o algunas) variables léxicas (mnemónico: variables "mY") en el
alcance actual o nivel alcances más altos. Puede limitar las variables que
ver con vars que funciona exactamente como lo hace con los comandos "V" y "X".
Requiere el módulo "PadWalker" versión 0.08 o superior; advertirá si esto
no está instalado. La salida se imprime con el mismo estilo que para "V" y
el formato está controlado por las mismas opciones.

T Producir un seguimiento de pila. Consulte a continuación para obtener detalles sobre su salida.

s [expr] Un solo paso. Ejecuta hasta el comienzo de otra sentencia, descendente
en llamadas a subrutinas. Si se proporciona una expresión que incluye la función
llamadas, también será de un solo paso.

n [expr] Siguiente. Ejecuta sobre llamadas a subrutinas, hasta el comienzo de la siguiente.
declaración. Si se proporciona una expresión que incluye llamadas a funciones, esas
las funciones se ejecutarán con paradas antes de cada instrucción.

r Continuar hasta el regreso de la subrutina actual. Volcar el valor de retorno
si la opción "PrintRet" está configurada (predeterminada).

Repita el último comando "n" o "s".

c [línea | sub]
Continuar, opcionalmente insertando un punto de interrupción de una sola vez en el especificado
línea o subrutina.

l Enumere la siguiente ventana de líneas.

l min + incr Lista "incr + 1" líneas que comienzan en "min".

l min-max Lista de líneas "min" a "max". "l -" es sinónimo de "-".

l línea Muestra una sola línea.

l subnombre Lista la primera ventana de líneas de subrutina. subnombre puede ser una variable que
contiene una referencia de código.

- Lista de la ventana anterior de líneas.

v [línea] Ver algunas líneas de código alrededor de la línea actual.

. Devuelva el puntero del depurador interno a la última línea ejecutada e imprima
esa linea.

f nombre de archivo Cambia para ver un archivo diferente o una declaración "eval". Si nombre de archivo no es un
nombre de ruta completo que se encuentra en los valores de% INC, se considera una expresión regular.

Las cadenas ed "eval" (cuando son accesibles) se consideran nombres de archivo: "f (eval
7) "y" f eval 7 \ b "acceden al cuerpo de la séptima cadena de edición" eval "(en el orden
de ejecución). Los cuerpos de "eval" actualmente ejecutados y de "eval" ed
las cadenas que definen subrutinas se guardan y, por lo tanto, se puede acceder a ellas.

/ patrón / Búsqueda hacia adelante de patrón (una expresión regular de Perl); final / es opcional. La búsqueda
no distingue entre mayúsculas y minúsculas de forma predeterminada.

?¿patrón? Busque el patrón hacia atrás; final? es opcional. La búsqueda es case-
insensible por defecto.

L [abw] Lista (todas las acciones predeterminadas), puntos de interrupción y expresiones de observación

S [[!] Regex]
Enumere los nombres de subrutinas que [no] coinciden con la expresión regular.

t [n] Alternar el modo de seguimiento (ver también la opción "AutoTrace"). El argumento opcional es el
número máximo de niveles para rastrear por debajo del actual; algo más profundo que
que estará en silencio.

t [n] expr Traza mediante la ejecución de "expr". El primer argumento opcional es el máximo
número de niveles para rastrear por debajo del actual; algo más profundo que eso
estará en silencio. Consulte "Ejemplos de salida de listas de marcos" en perldebguts para
ejemplos.

b Establece un punto de interrupción en la línea actual

b [línea] [condición]
Establezca un punto de interrupción antes de la línea dada. Si se especifica una condición, es
evaluado cada vez que se alcanza la declaración: se toma un punto de interrupción solo si
la condición es verdadera. Los puntos de interrupción solo se pueden establecer en líneas que comienzan un
declaración ejecutable. Las condiciones no usan "si":

b 237 $ x> 30
b 237 ++ $ count237 <11
b 33 / patrón / i

Si el número de línea es ".", Establece un punto de interrupción en la línea actual:

B . $ n> 100

b [archivo]: [línea] [condición]
Establezca un punto de interrupción antes de la línea dada en un archivo (posiblemente diferente). Si un
se especifica la condición, se evalúa cada vez que se alcanza la declaración: a
El punto de interrupción se toma solo si la condición es verdadera. Los puntos de interrupción solo pueden ser
establecido en líneas que comienzan una declaración ejecutable. Las condiciones no usan "si":

b lib / MyModule.pm: 237 $ x> 30
b /usr/lib/perl5/site_perl/CGI.pm:100 ++ $ count100 <11

b subnombre [condición]
Establezca un punto de interrupción antes de la primera línea de la subrutina nombrada. subnombre pueden
ser una variable que contenga una referencia de código (en este caso condición no es
soportado).

b posponer subnombre [condición]
Establezca un punto de interrupción en la primera línea de la subrutina después de compilarla.

b cargar nombre de archivo
Establezca un punto de interrupción antes de la primera línea ejecutada del nombre de archivo, que debería
ser un nombre de ruta completo que se encuentre entre los valores de% INC.

b compilar subnombre
Establece un punto de interrupción antes de la primera instrucción ejecutada después de la especificada
se compila la subrutina.

Línea B Elimina un punto de interrupción del especificado. línea.

B * Eliminar todos los puntos de interrupción instalados.

deshabilitar [archivo]: [línea]
Deshabilite el punto de interrupción para que no detenga la ejecución del programa.
Los puntos de interrupción están habilitados de forma predeterminada y se pueden volver a habilitar utilizando el "habilitar"
mando.

inhabilitar [línea]
Deshabilite el punto de interrupción para que no detenga la ejecución del programa.
Los puntos de interrupción están habilitados de forma predeterminada y se pueden volver a habilitar utilizando el "habilitar"
mando.

Esto se hace para un punto de interrupción en el archivo actual.

habilitar [archivo]: [línea]
Habilite el punto de interrupción para que detenga la ejecución del programa.

habilitar [línea]
Habilite el punto de interrupción para que detenga la ejecución del programa.

Esto se hace para un punto de interrupción en el archivo actual.

un comando de [línea]
Establezca una acción para realizar antes de que se ejecute la línea. Si línea se omite, establece
una acción en la línea a punto de ejecutarse. La secuencia de pasos dados por
el depurador es

1. busque un punto de interrupción en esta línea
2. imprima la línea si es necesario (calco)
3. realizar cualquier acción asociada con esa línea
4. avisar al usuario si se encuentra en un punto de interrupción o en un solo paso
5. evaluar la línea

Por ejemplo, esto imprimirá $ foo cada vez que se pase la línea 53:

a 53 imprimir "DB ENCONTRADO $ foo \ n"

Una línea Elimina una acción de la línea especificada.

A * Eliminar todas las acciones instaladas.

w expr Agrega una expresión de observación global. Siempre que un global observado cambia el depurador
se detendrá y mostrará los valores nuevos y antiguos.

W expr Eliminar expresión-observación

W * Elimina todas las expresiones de observación.

o Mostrar todas las opciones.

o boolopción...
Establezca cada opción booleana listada en el valor 1.

o alguna opción? ...
Imprime el valor de una o más opciones.

o opción = valor ...
Establezca el valor de una o más opciones. Si el valor tiene espacios en blanco internos,
debe ser citado. Por ejemplo, puede establecer "o pager =" less -MQeicsNfr ""
llamar less con esas opciones específicas. Puede usar simple o doble
comillas, pero si lo hace, debe escapar de cualquier instancia incrustada del mismo tipo de
cita con la que comenzaste, así como cualquier escape que inmediatamente
preceden a esa cita, pero que no deben escapar a la cita en sí. En
en otras palabras, sigue las reglas de cotización única independientemente de la cotización; ego
opción = 'esto no está mal' "o" o opción = "Ella dijo, \" ¿No es así? \ "" ".

Por motivos históricos, "= valor" es opcional, pero el valor predeterminado es 1 solo cuando
es seguro hacerlo, es decir, principalmente para las opciones booleanas. Siempre es mejor
para asignar un valor específico usando "=". La "opción" se puede abreviar, pero
para mayor claridad, probablemente no debería ser así. Se pueden configurar varias opciones juntas. Ver
"Opciones configurables" para obtener una lista de estos.

<? Enumere todas las acciones de comandos de Perl previas a la solicitud.

<[comando]
Configure una acción (comando de Perl) para que suceda antes de cada indicador del depurador. Un multi-
El comando de línea se puede ingresar con la barra invertida en las nuevas líneas.

<* Elimina todas las acciones de comandos de Perl previas a la solicitud.

<< comando Agrega una acción (comando de Perl) antes de cada indicador del depurador. Un multi-
El comando de línea se puede ingresar retrocediendo las líneas nuevas.

>? Enumere las acciones de comando de Perl posteriores a la solicitud.

> comando Establezca una acción (comando de Perl) para que suceda después del indicador cuando acaba de dar
un comando para volver a ejecutar el script. Un comando de varias líneas puede ser
ingresado haciendo una barra invertida en las nuevas líneas (apostamos a que no podría haberlo adivinado por
ahora).

> * Eliminar todas las acciones de comando de Perl posteriores al indicador.

>> comando Agrega una acción (comando de Perl) para que suceda después del indicador cuando acaba de
dado un comando para volver a ejecutar el script. Un comando multilínea puede
ser ingresado mediante la barra invertida en las nuevas líneas.

{? Enumere los comandos del depurador previos al indicador.

{[comando]
Configure una acción (comando del depurador) para que suceda antes de cada solicitud del depurador. A
El comando multilínea se puede ingresar de la manera habitual.

Debido a que este comando es nuevo en algunos sentidos, se emite una advertencia si aparece
haber entrado accidentalmente en un bloque en su lugar. Si eso es lo que pretendes hacer
escríbalo como con "; {...}" o incluso "do {...}".

{* Elimina todos los comandos del depurador previos a la solicitud.

{{comando Agrega una acción (comando del depurador) antes de cada solicitud del depurador. A
Se puede ingresar un comando de varias líneas, si puede adivinar cómo: vea arriba.

! number Rehace un comando anterior (por defecto es el comando anterior).

! -number Rehacer número del comando anterior.

! patrón Rehaga el último comando que comenzó con patrón. Consulte también "o recallCommand".

!! cmd Ejecute cmd en un subproceso (lee de DB :: IN, escribe en DB :: OUT) Ver "o
shellBang ", también. Tenga en cuenta que el shell actual del usuario (bueno, su $ ENV {SHELL}
variable) se utilizará, lo que puede interferir con la interpretación adecuada de la salida
estado o señal e información de descarga del núcleo.

archivo de origen Leer y ejecutar comandos del depurador desde presentar. presentar puede contener en sí mismo
comandos de "fuente".

Número H Muestra los últimos n comandos. Solo se enumeran los comandos de más de un carácter.
If número se omite, enumere todos.

q o ^ D Salir. ("salir" no funciona para esto, a menos que haya creado un alias).
única forma admitida de salir del depurador, aunque escribir "salir" dos veces podría
extra.

Establezca la opción "inhibit_exit" en 0 si desea poder salir del final
la secuencia de comandos. También es posible que deba establecer $ terminado en 0 si desea dar un paso
a través de la destrucción global.

R Reinicie el depurador "exec ()" en una nueva sesión. Tratamos de mantener su
historial a través de esto, pero la configuración interna y las opciones de la línea de comandos pueden ser
perdió.

Actualmente se conservan los siguientes ajustes: historial, puntos de interrupción, acciones,
opciones del depurador y las opciones de la línea de comandos de Perl -w, -Iy -e.

| dbcmd Ejecute el comando del depurador, canalizando DB :: OUT a su localizador actual.

|| dbcmd Igual que "| dbcmd" pero DB :: OUT también está temporalmente "select" ed.

= [valor de alias]
Defina un alias de comando, como

= salir q

o enumerar los alias actuales.

comando Ejecuta el comando como una declaración de Perl. Se proporcionará un punto y coma al final.
Si la declaración de Perl se confundiría de otra manera con un depurador de Perl, use un
punto y coma inicial también.

m expr Lista los métodos que se pueden llamar en el resultado de la expresión evaluada.
La expresión puede evaluarse como una referencia a un objeto bendecido oa un
Nombre del paquete.

M Muestra todos los módulos cargados y sus versiones.

hombre [página de manual]
A pesar de su nombre, esto llama al visor de documentación predeterminado de su sistema en el
página dada, o en el propio visor si página de manual se omite. Si ese espectador es
hombre, la información de "Config" actual se utiliza para invocar hombre usando el apropiado
MANPATH o -M camino de hombre opción. Búsquedas fallidas del formulario "XXX" que coinciden
páginas de manual conocidas del formulario perlXXX se reintentará. Esto te permite escribir "hombre
debug "o" man op "del depurador.

En sistemas tradicionalmente desprovistos de un hombre comando, el depurador invoca
perldoc. Ocasionalmente, esta determinación es incorrecta debido a recalcitrantes
proveedores o, mejor dicho, más felizmente, a usuarios emprendedores. Si caes en
cualquiera de las categorías, simplemente configure manualmente la variable $ DB :: doccmd en cualquier visor
para ver la documentación de Perl en su sistema. Esto se puede configurar en un archivo rc,
o por cesión directa. Todavía estamos esperando un ejemplo práctico de
algo parecido a:

$ DB :: doccmd = 'netscape -remote http://something.here/';

configurable De Seguros
El depurador tiene numerosas opciones que se pueden configurar mediante el comando "o", ya sea de forma interactiva o
desde el entorno o un archivo rc. (./.perldb o ~ / .perldb bajo Unix.)

"recallCommand", "ShellBang"
Los caracteres utilizados para recuperar un comando o generar un shell. Por defecto, ambos
están configurados en "!", lo cual es desafortunado.

"pager" Programa que se utiliza para la salida de comandos con canalización de buscapersonas (los que comienzan con "|"
carácter.) De forma predeterminada, se utilizará $ ENV {PAGER}. Porque el depurador usa
las características de su terminal actual para negrita y subrayado, si el elegido
buscapersonas no pasa secuencias de escape sin cambios, la salida de algunos
Los comandos del depurador no serán legibles cuando se envíen a través del buscapersonas.

"tkRunning" Ejecute Tk mientras se le solicita (con ReadLine).

"signalLevel", "warnLevel", "dieLevel"
Nivel de verbosidad. De forma predeterminada, el depurador deja sus excepciones y
advertencias por sí solas, porque alterarlas puede dañar los programas que se ejecutan correctamente.
Intentará imprimir un mensaje cuando no se capten señales INT, BUS o SEGV
llegar. (Pero vea la mención de señales en "ERRORES" a continuación).

Para deshabilitar este modo seguro predeterminado, establezca estos valores en un valor superior a
0. En el nivel 1, obtienes retrocesos al recibir cualquier tipo de advertencia.
(esto a menudo es molesto) o una excepción (esto a menudo es valioso).
Desafortunadamente, el depurador no puede distinguir las excepciones fatales de las no fatales.
unos. Si "dieLevel" es incluso 1, también se rastrearán las excepciones no fatales.
y alterados sin ceremonias si provienen de cadenas "evaluadas" o de cualquier
tipo de "eval" dentro de los módulos que está intentando cargar. Si "dieLevel" es 2,
al depurador no le importa de dónde vienen: usurpa tu excepción
manejador e imprime un rastro, luego modifica todas las excepciones con su propio
adornos. Esto quizás sea útil para algunos propósitos de rastreo, pero
tiende a destruir irremediablemente cualquier programa que tome su manejo de excepciones
seriamente.

"AutoTrace" Modo de rastreo (similar al comando "t", pero se puede poner en "PERLDB_OPTS").

"LineInfo" Archivo o canalización para imprimir la información del número de línea. Si es una pipa (digamos,
"| visual_perl_db"), luego se usa un mensaje corto. Este es el mecanismo utilizado
para interactuar con un editor esclavo o un depurador visual, como el "vi" especial
o ganchos "emacs", o el depurador gráfico "ddd".

"inhibir_exit"
Si 0, permite paso a paso off el final del guión.

"PrintRet" Imprime el valor de retorno después del comando "r" si está configurado (predeterminado).

"ornaments" Afecta la apariencia de la pantalla de la línea de comando (ver Term :: ReadLine). Hay
Actualmente no hay forma de deshabilitarlos, lo que puede hacer que algunos resultados sean ilegibles en
algunas pantallas, o con algunos buscapersonas. Esto se considera un error.

"marco" Afecta la impresión de mensajes al entrar y salir de subrutinas. Si
"frame & 2" es falso, los mensajes se imprimen solo en la entrada. (Imprimiendo al salir
podría ser útil si se intercala con otros mensajes).

Si es "frame & 4", se imprimen los argumentos de las funciones, además del contexto y la persona que llama
info. Si "frame & 8", "stringify" y "tie" d "FETCH" sobrecargados están habilitados en
los argumentos impresos. Si es "frame & 16", el valor de retorno de la subrutina
está impreso.

La longitud a la que se trunca la lista de argumentos se rige por el siguiente
opción:

"maxTraceLen"
Longitud para truncar la lista de argumentos cuando se establece el bit 4 de la opción "marco".

"tamaño de ventana"
Cambie el tamaño de la ventana de la lista de códigos (el valor predeterminado es 10 líneas).

Las siguientes opciones afectan lo que sucede con los comandos "V", "X" y "x":

"arrayDepth", "hashDepth"
Imprime solo los primeros N elementos ('' para todos).

"dumpDepth" Limita la profundidad de recursividad a N niveles cuando se descargan estructuras. Valores negativos
se interpretan como infinito. Por defecto: infinito.

"compactDump", "veryCompact"
Cambia el estilo de la matriz y la salida hash. Si es "compactDump", la matriz corta puede
imprimirse en una línea.

"globPrint" Si se imprime el contenido de los globos.

"DumpDBFiles"
Volcar matrices que contienen archivos depurados.

"DumpPackages"
Volcar tablas de símbolos de paquetes.

"DumpReused"
Volcar el contenido de las direcciones "reutilizadas".

"cita", "HighBit", "undefPrint"
Cambia el estilo de volcado de cuerdas. El valor predeterminado de "cotización" es "auto"; uno
puede habilitar el formato de comillas dobles o simples estableciéndolo en "" "o
"'", respectivamente. De forma predeterminada, los caracteres con su conjunto de bits alto se imprimen
literal.

Volcado rudimentario de uso de memoria por paquete "UsageOnly". Calcula el tamaño total de las cadenas
que se encuentran en las variables del paquete. Esto no incluye léxicos en un
alcance del archivo del módulo, o se pierde en los cierres.

"HistFile" La ruta del archivo desde el cual el historial (asumiendo un término utilizable :: ReadLine
backend) se leerá en el inicio del depurador, y en el que se guardará
al apagar (para la persistencia entre sesiones). Similar en concepto al de Bash
Archivo ".bash_history".

"HistSize" El recuento de las líneas guardadas en el historial (asumiendo "HistFile" arriba).

Después de leer el archivo rc, el depurador lee la variable de entorno $ ENV {PERLDB_OPTS}
y analiza esto como el resto de una línea "O ..." como se podría ingresar en el depurador
inmediato. Puede colocar las opciones de inicialización "TTY", "noTTY", "ReadLine" y
"NonStop" allí.

Si su archivo rc contiene:

parse_options ("NonStop = 1 LineInfo = db.out AutoTrace");

entonces su secuencia de comandos se ejecutará sin intervención humana, poniendo la información de seguimiento en el
presentar db.fuera. (Si lo interrumpe, será mejor que restablezca "LineInfo" a / dev / tty si tu
Espero ver algo.)

"TTY" El TTY que se utilizará para depurar E / S.

"noTTY" Si está configurado, el depurador entra en modo "NonStop" y no se conectará a un TTY.
Si se interrumpe (o si el control va al depurador mediante la configuración explícita de
$ DB :: signal o $ DB :: single del script Perl), se conecta a un TTY
especificado en la opción "TTY" al inicio, o en un tty encontrado en tiempo de ejecución usando
el módulo "Term :: Rendezvous" de su elección.

Este módulo debe implementar un método llamado "nuevo" que devuelva un objeto con
dos métodos: "IN" y "OUT". Estos deben devolver identificadores de archivos para usarlos
depuración de entrada y salida correspondientemente. El "nuevo" método debe inspeccionar
un argumento que contiene el valor de $ ENV {PERLDB_NOTTY} al inicio, o
"$ ENV {HOME} /. Perldbtty $$" de lo contrario. Este archivo no se inspecciona para verificar que
propiedad, por lo que los riesgos de seguridad son teóricamente posibles.

"ReadLine" Si es falso, la compatibilidad con readline en el depurador está deshabilitada para depurar
aplicaciones que utilizan ReadLine.

"NonStop" Si se establece, el depurador entra en modo no interactivo hasta que se interrumpe, o
programáticamente configurando $ DB :: signal o $ DB :: single.

A continuación, se muestra un ejemplo del uso de la variable $ ENV {PERLDB_OPTS}:

$ PERLDB_OPTS = "NonStop frame = 2" perl -d myprogram

Que ejecutará el script mi programa sin intervención humana, imprimiendo el árbol de llamadas
con puntos de entrada y salida. Tenga en cuenta que "NonStop = 1 frame = 2" es equivalente a "N f = 2", y
que originalmente, las opciones podían abreviarse unívocamente por la primera letra (módulo el
Opciones de "Volcado *"). No obstante, se recomienda que los deletree siempre en su totalidad.
para mayor legibilidad y compatibilidad futura.

Otros ejemplos incluyen

$ PERLDB_OPTS = "NonStop LineInfo = list frame = 2" perl -d myprogram

que ejecuta el script de forma no interactiva, imprimiendo información sobre cada entrada en una subrutina y
cada línea ejecutada en el archivo llamado listado. (Si lo interrumpes, será mejor que
restablecer "LineInfo" a algo "interactivo"!)

Otros ejemplos incluyen (usando la sintaxis de shell estándar para mostrar la variable de entorno
ajustes):

$ (PERLDB_OPTS = "Cuadro NonStop = 1 AutoTrace LineInfo = tperl.out"
perl -d myprogram)

que puede ser útil para depurar un programa que usa "Term :: ReadLine" en sí. No
Olvídese de desconectar su caparazón del TTY en la ventana que corresponde a / dev / ttyXX,
digamos, emitiendo un comando como

$ dormir 1000000

Consulte "Elementos internos del depurador" en perldebguts para obtener más detalles.

Depurador Entrada / Salida
Prompt El indicador del depurador es algo así como

DB <8>

o incluso

DB <<17>>

donde ese número es el número de comando, y que usaría para acceder con el
incorporado csh-como mecanismo de historia. Por ejemplo, "! 17" repetiría el comando
número 17. La profundidad de los corchetes angulares indica la profundidad de anidamiento del
depurador. Podría obtener más de un par de corchetes, por ejemplo, si
ya en un punto de interrupción y luego imprimió el resultado de una llamada de función que a sí misma
tiene un punto de interrupción, o ingresa a una expresión mediante el comando "expresión s / n / t".

Comandos multilínea
Si desea ingresar un comando de varias líneas, como una definición de subrutina con
varias declaraciones o un formato, escapar de la nueva línea que normalmente terminaría el
comando del depurador con una barra invertida. He aquí un ejemplo:

DB <1> para (1..4) {\
cont: imprimir "ok \ n"; \
cont:}
ok
ok
ok
ok

Tenga en cuenta que este asunto de escapar de una nueva línea es específico de los comandos interactivos
escrito en el depurador.

Pila de seguimiento
Aquí hay un ejemplo de cómo se vería un seguimiento de pila a través del comando "T":

$ = main :: infested llamado desde el archivo 'Ambulation.pm' línea 10
@ = Ambulación :: piernas (1, 2, 3, 4) llamado desde el archivo 'camel_flea' línea 7
$ = main :: plagas ('bactrian', 4) llamado desde el archivo 'camel_flea' línea 4

El carácter de la izquierda indica el contexto en el que se realizó la función.
llamado, con "$" y "@" que significan contextos escalares o de lista, respectivamente, y "."
significa contexto vacío (que en realidad es una especie de contexto escalar). La pantalla
arriba dice que estaba en la función "main :: infested" cuando ejecutó la pila
dump, y que se llamó en contexto escalar desde la línea 10 del archivo
Ambulación.pm, pero sin ningún argumento en absoluto, lo que significa que se llamó como
e infestado. El siguiente marco de pila muestra que la función "Ambulación :: piernas" fue
llamado en el contexto de la lista desde el camello_pulga archivo con cuatro argumentos. El último
marco de pila muestra que "main :: plagas" fue llamado en contexto escalar, también desde
camello_pulga, pero de la línea 4.

Si ejecuta el comando "T" desde dentro de una instrucción "use" activa, el
backtrace contendrá un marco "require" y un marco "eval".

Formato de listado de líneas
Esto muestra el tipo de salida que puede producir el comando "l":

DB <<13>> l
101: @i {@i} = ();
102: b @isa {@ i, $ paquete} = ()
103 if (existe $ i {$ prevpack} || existe $ isa {$ pack});
104}
105
106 siguiente
107 ==> si (existe $ isa {$ paquete});
108
109: a si ($ extra--> 0) {
110:% isa = ($ paquete, 1);

Las líneas divisibles están marcadas con ":". Las líneas con puntos de interrupción están marcadas con "b" y
aquellos con acciones por "a". La línea que está a punto de ejecutarse está marcada con
"==>".

Tenga en cuenta que es posible que el código de las listas de depuradores no tenga el mismo aspecto que su
código fuente original. Las directivas de línea y los filtros de fuente externa pueden alterar la
código antes de que Perl lo vea, lo que hace que el código se mueva de sus posiciones originales o tome
en formas completamente diferentes.

Listado de cuadros
Cuando se establece la opción "marco", el depurador imprime lo ingresado (y opcionalmente
salido) subrutinas en diferentes estilos. Ver perldebguts durante mucho tiempo
ejemplos de estos.

Depuración Tiempo de compilación Declaraciones
Si tiene declaraciones ejecutables en tiempo de compilación (como código dentro de BEGIN, UNITCHECK y
CHECK bloques o declaraciones de "uso"), estos no ser detenido por el depurador, aunque
Los bloques "require" e INIT lo harán, y las declaraciones en tiempo de compilación se pueden rastrear con el
Opción "AutoTrace" establecida en "PERLDB_OPTS"). Sin embargo, desde su propio código Perl puede
transferir el control de nuevo al depurador utilizando la siguiente declaración, que es inofensiva si
el depurador no se está ejecutando:

$ DB :: sencillo = 1;

Si establece $ DB :: single en 2, es equivalente a haber escrito el comando "n", mientras que
un valor de 1 significa el comando "s". La variable $ DB :: trace debe establecerse en 1 para
simular haber tecleado el comando "t".

Otra forma de depurar el código en tiempo de compilación es iniciar el depurador, establecer un punto de interrupción en el
carga de algún módulo:

DB <7> b carga f: /perllib/lib/Carp.pm
Se detendrá al cargar 'f: /perllib/lib/Carp.pm'.

y luego reinicie el depurador usando el comando "R" (si es posible). Se puede utilizar "b compile
subnombre "para el mismo propósito.

Depurador Personalización
El depurador probablemente contiene suficientes ganchos de configuración que nunca tendrá que hacer
modifíquelo usted mismo. Puede cambiar el comportamiento del depurador desde dentro del depurador
usando su comando "o", desde la línea de comando a través de la variable de entorno "PERLDB_OPTS",
y de archivos de personalización.

Puede personalizarlo configurando un .perldb archivo, que contiene inicialización
código. Por ejemplo, puede crear alias como estos (el último es el que la gente espera
estar alli):

$ DB :: alias {'len'} = 's / ^ len (. *) / P longitud ($ 1) /';
$ DB :: alias {'stop'} = 's / ^ stop (en | in) / b /';
$ DB :: alias {'ps'} = 's / ^ ps \ b / p escalar /';
$ DB :: alias {'salir'} = 's / ^ salir (\ s *) / salir /';

Puede cambiar las opciones desde .perldb usando llamadas como esta;

parse_options ("NonStop = 1 LineInfo = db.out AutoTrace = 1 frame = 2");

El código se ejecuta en el paquete "DB". Tenga en cuenta que .perldb se procesa antes
procesando "PERLDB_OPTS". Si .perldb define la subrutina "afterinit", esa función es
llamado después de que finaliza la inicialización del depurador. .perldb puede estar contenido en la corriente
directorio, o en el directorio de inicio. Debido a que este archivo proviene de Perl y puede
contener comandos arbitrarios, por razones de seguridad, debe ser propiedad del superusuario o del
usuario actual, y nadie más que su propietario puede escribir.

Puede simular la entrada de TTY al depurador agregando comandos arbitrarios a @DB :: typeahead. Para
ejemplo, tu .perldb el archivo puede contener:

sub afterinit {push @DB :: typeahead, "b 4", "b 6"; }

Que intentaría establecer puntos de interrupción en las líneas 4 y 6 inmediatamente después del depurador
inicialización. Tenga en cuenta que @DB :: typeahead no es una interfaz compatible y está sujeta a
cambio en versiones futuras.

Si desea modificar el depurador, copie perl5db.pl de la biblioteca de Perl a otro nombre
y piratearlo a tu antojo. A continuación, querrá configurar su entorno "PERL5DB"
variable para decir algo como esto:

COMIENZO {require "myperl5db.pl"}

Como último recurso, también puede utilizar "PERL5DB" para personalizar el depurador directamente
establecer variables internas o llamar a funciones de depuración.

Tenga en cuenta que cualquier variable y función que no esté documentada en este documento (o en
perldebguts) se consideran solo para uso interno y, como tales, están sujetos a cambios
sin notificación.

Readline Soporte / Historia in los Depurador
Tal como se envía, el único historial de línea de comandos proporcionado es uno simplista que busca
signos de exclamación iniciales. Sin embargo, si instala Term :: ReadKey y Term :: ReadLine
módulos de CPAN (como Term :: ReadLine :: Gnu, Term :: ReadLine :: Perl, ...) tendrá
capacidades de edición completas muy parecidas a las de GNU readline(3) proporciona. Busque estos en el
módulos / por módulo / Término directorio en CPAN. Estos no son compatibles con la normal vi De línea de comandos
edición, sin embargo.

También está disponible una terminación rudimentaria de la línea de comandos, que incluye variables léxicas en
el alcance actual si el módulo "PadWalker" está instalado.

Sin la compatibilidad con Readline, es posible que vea los símbolos "^ [[A", "^ [[C", "^ [[B", "^ [[D" "," ^ H ",
... al usar las teclas de flecha y / o la tecla de retroceso.

Editora Soporte for Depuración
Si tiene la versión GNU de emacs instalado en su sistema, puede interactuar con el
Depurador de Perl para proporcionar un entorno de desarrollo de software integrado que recuerda a su
interacciones con depuradores de C.

Las versiones recientes de Emacs vienen con un archivo de inicio para hacer emacs actuar como una sintaxis
editor dirigido que comprende (parte de) la sintaxis de Perl. Ver perlfaq3.

Los usuarios de vi también debería mirar en empuje y gvim, la versión mousey y ventosa, para colorear
de palabras clave de Perl.

Tenga en cuenta que solo perl puede analizar realmente Perl, por lo que todas estas herramientas CASE no alcanzan
la marca, especialmente si no programa su Perl como lo haría un programador en C.

El Perl Profiler
Si desea proporcionar un depurador alternativo para que Perl lo ejecute, invoque su script con un
dos puntos y un argumento de paquete dado al -d bandera. Los depuradores alternativos de Perl incluyen un
Generador de perfiles Perl, Devel :: NYTProf, que está disponible por separado como distribución CPAN. Para
perfile tu programa Perl en el archivo micodigo.pl, Sólo tipo:

$ perl -d: NYTProf mycode.pl

Cuando el script termina, el generador de perfiles creará una base de datos con la información del perfil.
que puede convertir en informes utilizando las herramientas del generador de perfiles. Ver para detalles.

Depuración Regular Expresiones


"use re 'debug'" le permite ver los detalles sangrientos de cómo la expresión regular de Perl
el motor funciona. Para comprender esta producción típicamente voluminosa, uno no solo debe
tener alguna idea sobre cómo funciona la coincidencia de expresiones regulares en general, pero también saber cómo
Las expresiones regulares de Perl se compilan internamente en un autómata. Estos asuntos son
explorado con cierto detalle en "Depurar expresiones regulares" en perldebguts.

Depuración Salud Cerebral Uso


Perl contiene soporte interno para informar sobre su propio uso de memoria, pero esto es bastante
concepto avanzado que requiere cierta comprensión de cómo funciona la asignación de memoria. Ver
"Depurando el uso de la memoria de Perl" en perldebguts para más detalles.

Use perldebug en línea usando los servicios de onworks.net


Servidores y estaciones de trabajo gratuitos

Descargar aplicaciones de Windows y Linux

  • 1
    OficinaPiso
    OficinaPiso
    OfficeFloor proporciona inversión de
    control de acoplamiento, con su: - dependencia
    inyección - inyección de continuación -
    inyección de hilo Para más información
    visita el...
    Descargar Office Floor
  • 2
    DivKit
    DivKit
    DivKit es un servidor de código abierto
    Marco de interfaz de usuario (SDUI). Te permite
    implementar actualizaciones provenientes del servidor para
    diferentes versiones de la aplicación. Además, puede ser
    usado para ...
    Descargar DivKit
  • 3
    subconvertidor
    subconvertidor
    Utilidad para convertir entre varios
    formato de suscripción. Usuarios de cohetes sombríos
    debe usar ss, ssr o v2ray como destino.
    Puede agregar &remark= a
    HT similar a Telegram...
    Descargar subconvertidor
  • 4
    CHAPOTEO
    CHAPOTEO
    SWASH es un numérico de propósito general
    herramienta para simular inestabilidad,
    no hidrostático, de superficie libre,
    fenómenos de transporte y flujo rotacional
    en aguas costeras como ...
    Descargar SWASH
  • 5
    VBA-M (Archivado - Ahora en Github)
    VBA-M (Archivado - Ahora en Github)
    El proyecto se ha trasladado a
    https://github.com/visualboyadvance-m/visualboyadvance-m
    caracteristicas:Creación de trucosguardar estadosmulti
    sistema, compatible con gba, gbc, gb, sgb,
    sgb2tu...
    Descargar VBA-M (Archivado - Ahora en Github)
  • 6
    Stacer
    Stacer
    Optimizador y monitorización del sistema Linux
    Repositorio de Github:
    https://github.com/oguzhaninan/Stacer.
    Público: Usuarios finales / Escritorio. Usuario
    interfaz: Qt. Programando La...
    Descargar Stacer
  • Más "

Comandos de Linux

Ad