Linux Fu: Depuración de los scripts de bash

Un reciente post sobre la depuración de construcciones me sorprendió. Hubo bastantes comentarios sobre cómo no necesitabas un depurador, siempre y cuando tuvieras printf. En realidad, todos hemos depurado sistemas en los que no tenías nada más que un LED que parpadeara o se encendiera para comunicarse con el usuario. Sin embargo, es difícil negar que un depurador puede ayudar con código complejo.

Decir que sólo necesitas la impresión sería como decir que sólo necesitas el lenguaje de máquina. Técnicamente es preciso – puede hacer cualquier cosa en lenguaje de máquina. Pero seguro que facilita las cosas el tener un ensamblador o algún lenguaje que le ayude a resolver su problema. Si escribe un simple script bash, puede usar el equivalente a printf – tal vez ese sea el comando echo, aunque normalmente hay un comando de printf en un sistema típico, si quiere usarlo. Sin embargo, hay otras cosas que puede hacer con bash, incluyendo un depurador bastante bueno si sabe cómo encontrarlo.

Asumo que ya sabes cómo usar echo e printf, pero vamos a profundizar en cómo usar la ejecución de trazas línea por línea sin necesidad de usar declaraciones de echo en cada una de las otras líneas. A lo largo del camino, aprenderás cómo empezar con el depurador de bash.


Rastreo

No siempre es fácil de leer, pero puede obtener un rastro de la ejecución completa de un script en ejecución añadiendo la opción -x a su invocación de bash. Hay al menos tres formas de hacerlo. Primero, puede hacer un conjunto -x en su sesión actual. El problema con esto es que cualquier cosa elegante que ocurra en el intérprete de comandos del shell aparecerá también. Esto hace que la salida sea aún más difícil de leer. Si utiliza este método, puede desactivar el trazado en un intérprete de órdenes con el valor +x.

12345678#!/bin/bash -xpara I en {1..10}dobanner $((9-I)) – HADechoechodone

También puede añadir la bandera cuando ejecute el script desde la línea de comandos: bash -x ./had.sh o al shebang en la primera línea de su script. Normalmente, tendrá #!/bin/bash en la parte superior del archivo, sólo tiene que añadir la -x en esa línea.

Por ejemplo, el siguiente script tiene algunos errores. Puse la -x en la parte superior, así que si lo ejecutas, verás cómo se ve el rastro. Fíjate en las líneas que empiezan con un signo más. Es la línea del script que se está ejecutando. Las otras líneas son en realidad la salida del script.


Instalación del depurador de fallos

Hay un depurador de bash disponible. Sin embargo, Ubuntu y distribuciones similares no lo han incluido en sus repositorios de software por un tiempo. Puedes, por supuesto, ir a buscarlo tú mismo. Querrás saber qué versión de bash estás usando (prueba bash –versión). Descargue la versión que coincida con la que tiene y siga las instrucciones.

El depurador en sí está escrito en bash. Utiliza una trampa especial que se dispara al final de cada sentencia que está ahí especialmente para la depuración. En teoría, podría crear su propio depurador usando esa trampa, pero es bastante trabajo.


Utilización del depurador

Hay al menos dos maneras de invocar el depurador. Puede ejecutarlo junto con el nombre del script que es bastante seguro:bashdb had.sh.

El único problema con esto es que puede confundir a $0 y el propio script aparece en el árbol de llamadas. Ejecutar bash con la opción -debugging también ejecutará el programa, o al menos debería hacerlo. A mí me funciona, pero anecdóticamente, algunas personas tienen problemas con este método.

Si usted pide ayuda sobre el programa bashdb, hay muchas opciones, pero ninguna que usted utilice a menudo. Dentro del programa, tienes comandos similares a los comandos de gdb. Puedes revisarlos todos escribiendo “help” en el prompt.

Pedir ayuda en el programa bashdb mostrará cómo establecer los puntos de interrupción, mirar los backtraces o incluso hacer que se ejecuten los comandos cuando se cumplan ciertas condiciones. Algunos de estos comandos merecen una investigación más profunda:

  • list – Muestra el guión con números de línea
  • break – Establece un punto de interrupción en una línea (nota: tbreak establece un punto de interrupción de una sola vez)
  • backtrace – Ver la pila de llamadas
  • Condición – Establece un punto de ruptura condicional
  • display – Configurar para imprimir una variable antes de cada parada
  • manija – Configurar el manejo de la trampa
  • step, next, skip – Comandos de un solo paso
  • trace, untrace – Como el argumento -x
  • reloj, relojes – Ajustar relojes

El proceso de depuración es familiar. Tanto si se trata de un solo paso a través del código, como si se establecen puntos de interrupción para detener el flujo del programa, esto le permite rastrear los problemas con mucha más flexibilidad de lo que lo haría el eco de la información.

Hay dos cosas que están mal en mi guión. Bueno, al menos dos cosas. Primero, me refería a que la pancarta cuenta atrás: 10, 9, 8, etc. También quería todo en una línea. Una de ellas es fácil de encontrar con el depurador.

Si quieres un video de recorrido, el de abajo es bastante viejo, pero aún así es bueno.

La mejor manera de no tener que depurar los scripts de shell es no poner errores para empezar. Hay herramientas que le ayudarán a conseguirlo. Por otra parte, puede escribir sus scripts de shell en C.

Se acerca el invierno, este reloj te hará saber cuando

Se acerca el invierno, este reloj te hará saber cuando

Para los fans de Juego de Tronos , es un momento incómodo. El programa ha terminado su carrera en HBO ...
Leer Más
David Williams es "FPGA-Curioso"

David Williams es “FPGA-Curioso”

Por si no lo habéis notado, en la Superconferencia de este año tuvimos un tema un poco más de FPGA ...
Leer Más
Nuevos semiconductores de carburo de silicio aportan mejoras en la eficiencia de los EV

Nuevos semiconductores de carburo de silicio aportan mejoras en la eficiencia de los EV

Después de pasar gran parte del siglo XX languideciendo en el infierno del desarrollo, los coches eléctricos han llegado finalmente ...
Leer Más
Una impresionante pistola de rayos construida a partir de chatarra

Una impresionante pistola de rayos construida a partir de chatarra

Si alguna vez existió un arma de ciencia ficción por excelencia, tendría que ser la pistola de rayos. construyó este ...
Leer Más
Creación de válvulas similares con fundición de resina

Creación de válvulas similares con fundición de resina

Las válvulas (tubos) ciertamente tienen una base de ventiladores duros en la comunidad electrónica, elogiadas por su sonido cálido, características ...
Leer Más
Desglose de los órganos de la botella

Desglose de los órganos de la botella

Un comentarista de mirada aguda nos señaló un órgano de botella casero que toca como un piano. La complejidad aparece ...
Leer Más
Reemplazo de un teclado de computadora portátil no reemplazable

Reemplazo de un teclado de computadora portátil no reemplazable

Derramar una bebida en un portátil es una experiencia aterradora. Si tiene suerte, arruinará sólo un teclado, y si no, ...
Leer Más
Intercambio de las ROMs en armarios de mini arcadas

Intercambio de las ROMs en armarios de mini arcadas

Probablemente haya visto algunos de estos juegos de arcade en miniatura en línea o en grandes tiendas: por unos 20 ...
Leer Más
Todavía hay vida en ese cortabarba!

Todavía hay vida en ese cortabarba!

¡No se puede conseguir un cortador de barba decente en estos días! Por lo menos eso es lo que [Peter ...
Leer Más
Nuevo concurso: Decir la hora

Nuevo concurso: Decir la hora

Relojes. A ti te encantan, a nosotros nos encantan. Así que no necesitas una razón para construir un nuevo reloj, ...
Leer Más
Una máquina de escribir térmica para pensamientos ardientes

Una máquina de escribir térmica para pensamientos ardientes

Hay un cierto encanto en las viejas tecnologías que han sido suplantadas por nuevas versiones. Y no estamos hablando sólo ...
Leer Más
Hacking de estilo cinematográfico con una pared de Hexágono Luminoso

Hacking de estilo cinematográfico con una pared de Hexágono Luminoso

A lo largo de los años, los medios de comunicación han logrado reunir algunas representaciones visuales bastante ridículas de la ...
Leer Más
Hackaday va al 36º Congreso de Comunicación del Caos

Hackaday va al 36º Congreso de Comunicación del Caos

Es esa época del año otra vez aquí en Alemania. El vino caliente fluye toda la noche en los mercados ...
Leer Más
Ted La Tostadora Parlanchina

Ted La Tostadora Parlanchina

El equipo detrás de [8 Bits and a Byte] ha construido una tostadora parlante. Más exactamente, han actualizado su tostadora ...
Leer Más
Vea un tirachinas hecho en arena, de principio a fin

Vea un tirachinas hecho en arena, de principio a fin

La fundición en arena de piezas metálicas es una técnica que existe desde hace mucho tiempo, pero puede ser educativo ...
Leer Más
Santa Claws: Afila tus habilidades por una buena causa

Santa Claws: Afila tus habilidades por una buena causa

¿Quieres hacer algo bueno en esta temporada de fiestas sin dejar tu sofá o estación de batalla? Pues acércate y ...
Leer Más
Visita al ordenador de relés FACOM 128B 1958

Visita al ordenador de relés FACOM 128B 1958

Si estudia la historia de la computación es posible que haya oído hablar del FACOM 128B, un ordenador de retransmisión ...
Leer Más
Frentes Yosys para Xilinx ISE

Frentes Yosys para Xilinx ISE

Siempre nos maravillamos de cómo las herramientas de código abierto pueden superar a menudo a sus homólogos comerciales. Yosys, la ...
Leer Más
La enorme impresora 3D produce un barco y desafíos

La enorme impresora 3D produce un barco y desafíos

Hemos visto algunas impresoras 3D de polímeros bastante grandes, pero nada tan grande como la impresora 3D de la Universidad ...
Leer Más
Restauración de un Commodore muerto 128DCR

Restauración de un Commodore muerto 128DCR

Otro día, otro ordenador retro restaurado con cariño a su estado como nuevo por [Drygol]. Esta vez, el objeto de ...
Leer Más
El control remoto de la puerta clonada lo hace (ligeramente) mejor

El control remoto de la puerta clonada lo hace (ligeramente) mejor

¿Alguna vez hiciste algo sólo para ver si podías? Sí, eso pensamos. [serverframework] quería ver si podía clonar el control ...
Leer Más
radio ww2

La radio de los aviones de la Segunda Guerra Mundial

Toda mi vida me han hablado de las antiguas tiendas de excedentes del Ejército y la Marina donde se podían ...
Leer Más
¡Jackpot!: Las pruebas y tribulaciones de convertir una tragaperras en un cajero automático

¡Jackpot!: Las pruebas y tribulaciones de convertir una tragaperras en un cajero automático

¿Alguna vez has deseado que las máquinas tragaperras dispensen dinero tan fácilmente como un cajero automático? Bueno, también lo deseaba ...
Leer Más
Una mini máquina expendedora para aumentar sus ventas

Una mini máquina expendedora para aumentar sus ventas

Una visión común en el mundo de los espacios para hackers es una vieja máquina expendedora que se ha reconvertido ...
Leer Más
Deje que un robot de RCP salve el día

Deje que un robot de RCP salve el día

Cuatro estudiantes de secundaria en Lyon, Francia, están construyendo un robot de RCP, con el objetivo de eliminar el problema ...
Leer Más
Kerry Scharfglass asegura sus cosas de IO

Kerry Scharfglass asegura sus cosas de IO

Todos hemos visto los naufragios de la seguridad de los dispositivos IO: esos aparatos que fallan tan espectacularmente que la ...
Leer Más
Supercon: Las cosas que trajiste, y algunas que olvidaste

Supercon: Las cosas que trajiste, y algunas que olvidaste

Parte de la diversión de Supercon es que hay tanto disponible en un solo lugar. Por el precio de la ...
Leer Más
La Mujer Maravilla y el verdadero lazo de la verdad

La Mujer Maravilla y el verdadero lazo de la verdad

Puede que te parezca extraño que una historia sobre tecnología empiece hablando de la Mujer Maravilla. Cuando te das cuenta ...
Leer Más
El Macro Pie Stool me ayuda a levantar una pierna en el trabajo

El Macro Pie Stool me ayuda a levantar una pierna en el trabajo

Los macros están pensados para facilitarnos la vida, pero cumplen esta promesa con resultados mixtos. En términos generales, una macro ...
Leer Más
El ArrBot es una forma rápida de salir adelante en un nuevo campo de la robótica

El ArrBot es una forma rápida de salir adelante en un nuevo campo de la robótica

[Junglist] señala correctamente que la robótica agrícola está en camino de ser la próxima gran cosa (TM) y presenta su ...
Leer Más

Deja un comentario