“Depurando” com o bashdb: por que eu perco o comando echo depois de entrar em um script simples?

2

Eu ouvi sobre o depurador bash ( bashdb ) depois de ler um comment então eu pensei que deveria experimentá-lo e ver se ele pode me ajudar a analisar scripts bash ou mais geralmente a execução de comandos. Existem instalações que podem ser aproveitadas independentemente de qualquer programa externo, mas há a questão de conveniência e O bashdb é executado no shell e pode ser chamado diretamente ou com bash --debugger command quando configurado corretamente.

Então, tentei algo trivial em um script:

#!/usr/bin/env bash

{ echo 'abc'; echo 'def'; } | cat

Que são apenas dois comandos echo em uma lista inutilmente canalizados para o comando cat . Usando bashdb scriptname , obtenho:

(/home/user/bin/scriptname:3):
3:  { echo 'abc'; echo 'def'; } | cat
(/home/user/bin/scriptname:3):
3:  { echo 'abc'; echo 'def'; } | cat
bashdb<0> bashdb<(0)> step

Portanto, existe um operador de pipe e um subshell é criado - os parênteses em torno do 0 são um tributo a isso. Eu tento step imediatamente. Uma nova linha é enviada, mas eu não recebo o prompt do depurador ... até que eu pressione enter novamente. A essa altura, perdi a saída do que digito no depurador e o desempenho parece altamente degradado. Fazendo q e pressionando Enter, eu saio do depurador e agora meu terminal não exibe mais meus comandos também. Os comandos são executados, mas eu preciso sair de uma nova janela de terminal para recuperar qualquer eco de comando. Em alguns casos, tanto na ferramenta quanto depois de sair no bash, não apenas os comandos não são mais ecoados, mas os comandos seguintes da nova linha também se foram.

Então, obviamente, eu tenho muito pouca experiência com esse tipo de software, mas este parece ser o comportamento desejado, já que obtenho resultados similares tanto no Gentoo quanto no Archbang ?? Então, o que aconteceu aqui e em que eu pisei?

    
por jus cogens prime 10.03.2014 / 18:44

1 resposta

1

O que está acontecendo é que o pipe define a saída por padrão é ir para cat, e isso inclui a saída do depurador. Há --tty opção para informar ao depurador onde enviar a saída, mas isso não está fazendo o que eu esperava. (Para ver qual valor colocar depois de --tty run tty . Arquive isso como um bug e eu vou olhe quando eu puder.

    
por 26.04.2015 / 16:20