Coba ikuti langkah-langkah ini:- temukan proses pid dari shell, Anda dapat menggunakan perintah seperti:
ps -ef | grep <your_script_name>
-
Mari atur pid ini di variabel shell $PID. Temukan semua proses anak dari $PID ini dengan menjalankan perintah:
ps --ppid $PID
Anda mungkin menemukan satu atau lebih (jika misalnya macet dalam rangkaian perintah yang disalurkan). Ulangi perintah ini beberapa kali. Jika tidak berubah ini berarti skrip macet di perintah tertentu. Dalam hal ini, Anda dapat melampirkan perintah pelacakan ke proses anak yang sedang berjalan:
sudo strace -p $PID
Ini akan menunjukkan kepada Anda apa yang sedang dieksekusi, baik loop tak terbatas (seperti membaca dari pipa), atau menunggu beberapa peristiwa yang tidak pernah terjadi.
Jika Anda menemukan ps --ppid $PID
berubah, ini menunjukkan bahwa skrip Anda maju tetapi macet di suatu tempat, mis. loop lokal dalam skrip. Dari perintah yang berubah, ini bisa memberi Anda petunjuk di mana skrip itu berulang.
Terakhir, metode yang sangat sederhana untuk men-debug perl adalah dengan menggunakan perl debugger:
perl -d script.pl
Lainnya:1, 2, 3, 4, 5
Untuk menjalankan skrip Anda selanjutnya, Anda dapat mencoba paket Devel::Trace.
Dari deskripsi:"Modul ini akan mencetak pesan ke kesalahan standar tepat sebelum setiap baris dijalankan."
Jalankan dengan
perl -d:Trace program
atau gunakan dalam skrip Anda dengan
import Devel::Trace 'trace';
trace 'on'; # Enable
trace 'off'; # Disable