シェルスクリプトのデバッグ

シェルスクリプトのデバッグ

リモートホストへのSSH接続を定義し、リモートで実行されているスクリプトをローカルに接続してデバッグできるIDEがあるかどうか疑問に思います(EclipseでリモートJavaアプリケーションをデバッグする方法と似ています)。変数を1行ずつ確認できるようにしたいです。

ベストアンサー1

トレース出力を改善する簡単な方法は、次のコードスニペットを使用することです。

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

これにより、以下が表示されます。

  1. ソースファイル
  2. ソース行番号
  3. 機能名

また、見ることができますc42 - 共通機能 Wiki ページ

出力例:

   $ 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 ''
   ...

別のオプションはバッシュデータベース:

これはO'Reilly and Associates(ISBN 1-56592-054-6)で公開され、Michael LoukidesとCigy Cyriac Changeによって編集されたBill Rosenblattの「Korn Shell学習」のKorn Shell Debuggerを完全に書き直しました。ただし、このコードはPOSIX標準の一部ではなく、多くのPOSIX様シェルにもないいくつかのデバッグサポート機能に依存しています。 bashdbは、BASHで書かれたスクリプトをデバッグするためにのみ使用できますが、BASHプログラミングの詳細を学ぶためのフロントエンドとしても使用できます。さらなるサポートにより、デバッガは、関数と変数がすでに初期化されている既存のスクリプトのコンテキストで使用できます。デバッガ内で既存のコードスニペットを変更して実験できます。

おすすめ記事