Mulai skrip bash Anda dengan bash -x ./script.sh
atau tambahkan skrip Anda set -x
untuk melihat hasil debug.
Tambahan dengan bash
4.1 atau lebih baru:
Jika Anda ingin menulis hasil debug ke file terpisah, tambahkan ini ke skrip Anda:
exec 5> debug_output.txt
BASH_XTRACEFD="5"
Lihat: https://stackoverflow.com/a/25593226/3776858
Jika Anda ingin melihat nomor baris, tambahkan ini:
PS4='$LINENO: '
Jika Anda memiliki akses ke
logger
perintah maka Anda dapat menggunakannya untuk menulis keluaran debug melalui syslog Anda dengan stempel waktu, nama skrip, dan nomor baris:
#!/bin/bash
exec 5> >(logger -t $0)
BASH_XTRACEFD="5"
PS4='$LINENO: '
set -x
# Place your code here
Anda dapat menggunakan opsi -p
dari logger
perintah untuk mengatur fasilitas individu dan tingkat untuk menulis output melalui syslog lokal untuk logfile sendiri.
BASH_XTRACEFD="5"
bash, tulis jejak keluaran yang dihasilkan saatset -x
diaktifkan ke file descriptor 5.exec 5> >(logger -t $0)
redirect output dari file descriptor 5 kelogger
perintah.Menggunakan
set -x
Saya selalu menggunakan
set -x
danset +x
. Anda dapat membungkus area yang ingin Anda lihat apa yang terjadi dengan mereka untuk menaikkan / menurunkan verbositas.log4bash
Juga jika Anda telah melakukan pekerjaan pengembangan dan terbiasa dengan gaya logger yang menggunakan nama log4j, log4perl, dll., Maka Anda mungkin ingin menggunakan log4bash .
kutipanDari sana Anda dapat melakukan hal-hal seperti ini di skrip Bash Anda:
Menghasilkan jenis output ini:
log4sh
Jika Anda membutuhkan sesuatu yang lebih portabel ada juga yang lebih tua
log4sh
. Pekerjaan serupa denganlog4bash
, tersedia di sini:sumber
alias say="spd-say"
di .bashrc saya, yang menirusay
perintah dari distro lain atau OS X.Ada bash debugger, bashdb , yang merupakan paket yang dapat diinstal pada banyak distro. Ini menggunakan mode debugging diperpanjang bawaan bash (
shopt -s extdebug
). Ini mirip sekali dengan gdb; inilah sesi contoh untuk memberikan rasa:Seperti dalam gdb, pernyataan ditampilkan tepat sebelum akan dieksekusi. Jadi kita bisa memeriksa variabel untuk melihat apa yang akan dilakukan pernyataan sebelum melakukannya.
Bukan itu yang kita inginkan! Mari kita lihat lagi ekspansi parameter.
Oke, itu berhasil. Mari kita atur
newf
ke nilai yang benar.Kelihatan bagus. Lanjutkan skrip.
sumber
Metode standar untuk men-debug skrip di sebagian besar shell berbasis Bourne, seperti bash adalah menulis
set -x
di bagian atas skrip Anda. Ini akan membuat bash lebih banyak bicara tentang apa yang sedang dilakukan / dieksekusi, dan bagaimana argumen dievaluasi.ini berguna untuk skrip interpreter atau skrip dalam. Sebagai contoh:
Di atas kita bisa melihat mengapa find gagal karena beberapa kutipan tunggal.
Untuk menonaktifkan fitur, cukup ketik
set +x
.sumber
Menggunakan Eclipse
Anda dapat menggunakan lingkungan gabungan Eclipse dan Shelled dengan skrip "_DEBUG.sh" yang ditautkan di bawah ini.
http://sourceforge.net/projects/shelled/files/shelled/update/
http://sourceforge.net/projects/basheclipse/
Mengganti cangkang
Secara default alat pengembangan Shelled menggunakan
/bin/dash
sebagai penerjemah. Saya mengubah ini agar/bin/bash
memiliki kompatibilitas yang lebih baik dengan sebagian besar contoh shell di web dan lingkungan saya.CATATAN: Anda dapat mengubah ini dengan masuk ke: Jendela -> Preferensi -> Skrip Shell -> Penerjemah
Petunjuk Penyiapan
Paket Debugger memiliki langkah-langkah untuk menggunakan
_DEBUG.sh
skrip untuk debugging skrip Anda yang pada dasarnya (readme.txt):UI debug bash
Bash debugger ini memiliki fitur lengkap dari debugger pemrograman standar seperti:
IDE Shelled (Shell Script Editor) (Lingkungan Pengembangan Terpadu) memiliki bonus tambahan untuk melakukan pengecekan konteks, penyorotan dan indentasi saat menulis skrip Anda. Jika tidak indentasi dengan benar, Anda mungkin dapat langsung menandai / lokal banyak kesalahan di sana.
Lalu ada manfaat IDE lainnya seperti:
sumber
Sumber yang luar biasa muncul dalam beberapa tahun terakhir: http://shellcheck.net
itu menunjukkan Anda lebih daripada bash biasa, memungkinkan seseorang untuk menemukan dengan mudah kutipan yang tidak tertutup atau kurung keriting, dll.
Pastikan Anda tidak menempelkan info sensitif (ips, kata sandi, dll) di internet ... (terutama karena http, tidak terenkripsi) (Saya percaya shellcheck juga tersedia untuk diunduh, tetapi saya tidak yakin)
sumber
cukup gunakan:
sama untuk shell:
sumber
Saat ini, ada VS Code Bash Debug.
https://marketplace.visualstudio.com/items?itemName=rogalmic.bash-debug
Ini memiliki 'Langkah Masuk / Keluar / Lebih' dan juga menunjukkan nilai dari setiap variabel.
sumber