Depuração do script de shell

4

Eu queria saber se existe um IDE que me permita definir uma conexão ssh com um host remoto, conectar-se e depurar localmente um script que esteja sendo executado remotamente (como se fosse possível depurar um aplicativo Java remoto no Eclipse)? Eu quero ser capaz de ir por linha como e examinar vars e tudo isso.

    
por amphibient 26.12.2012 / 23:32

2 respostas

2

Uma maneira fácil de melhorar a saída de rastreamento é o seguinte fragmento de código:

  PS4='[${BASH_SOURCE[0]:-inherited}:${LINENO}:${FUNCNAME[0]:-main}] '
  set -o xtrace

Isso mostrará a você:

  1. arquivo de origem
  2. número da linha de origem
  3. nome da função

veja também página wiki para c42-common-functions

Exemplo de saída:

   $ c42_loglevel_trace
   $ pidkill --help
   ++ '[' '+ ' == '+ ' ']'
   ++ PS4='[${BASH_SOURCE[0]:-inherited}:${LINENO}:${FUNCNAME[0]:-main}] '
   ...
   [/usr/local/bin/pidkill:224:main] '[' 1 -eq 0 ']'
   [/usr/local/bin/pidkill:230:main] signal=KILL
   [/usr/local/bin/pidkill:231:main] '[' 1 -gt 0 ']'
   [/usr/local/bin/pidkill:233:main] case $1 in
   [/usr/local/bin/pidkill:268:main] shift 1
   [/usr/local/bin/pidkill:269:main] help
   [/usr/local/bin/pidkill:57:help] cat
   pidkill <-h|--help>                                              this help
   [/usr/local/bin/pidkill:70:help] copyLeft
   [/usr/local/bin/pidkill:13:copyLeft] echo ''
   ...

Uma alternativa é bashdb :

This is a complete rewrite of the Korn Shell debugger from Bill Rosenblatt's 'Learning the Korn Shell', published by O'Reilly and Associates (ISBN 1-56592-054-6) with changes by Michael Loukides and Cigy Cyriac. However, this code now depends on a number of debugging support features that are neither part of the POSIX standard nor present are in many POSIX-like shells. Although you can just use bashdb to debug scripts written in BASH, it can also be used just as a front-end for learning more about programming in BASH. As an additional aid, the debugger can be used within the context of an existing script with its functions and variables that have already been initialized; fragments of the existing code can be experimented with by changing them inside the debugger.

    
por 18.01.2013 / 12:09
0

um IDE para depurar scripts bash? Não vejo como uma GUI gráfica ajudaria a ssh em um host e apresentaria uma saída cli de um script. Também não sei de um debugger bash você pode executar o script dentro de. mas você não está especificando qual tipo de script de shell você está falando.

se for bash, você poderá usar o sinalizador -x para ativar o rastreio. que está quase depurando. mas você não pode quebrar e entrar / sair / acabar ... Eu acho isso muito útil.

para que você possa ativá-lo diretamente no shebang com

#!/usr/bin/bash -x

ou use o conjunto para ativar / desativar o rastreamento

set -x # enable debugging

set +x # disable tracing

você também pode pausar seu script com read

ENV vars pode ser encontrado em /proc/<PID>/environ eles são \ 0 separados, você pode usar sed para substituir o caractere nulo por um CR

cat /proc/10815/environ | sed 's/%code%/\n/g'

aproveite

esqueça a GUI para tornar sua vida mais fácil. GUI é para usuários e consumidores.

    
por 26.12.2012 / 23:59