GNU/Linux >> Belajar Linux >  >> Linux

Skrip Perl berjalan tanpa batas - bagaimana cara men-debug apa yang terjadi?

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

Linux
  1. Bagaimana Cara Men-debug Skrip Bash?

  2. Cara menguji skrip PHP

  3. Bagaimana saya memastikan hanya satu contoh skrip Ruby yang berjalan pada satu waktu?

  1. Bagaimana saya bisa menjalankan skrip Perl sebagai daemon sistem di linux?

  2. Bagaimana cara mengetahui versi Linux yang saya jalankan?

  3. Bagaimana cara menentukan proses berjalan apa yang menggunakan java?

  1. Versi Linux Apa yang Saya Jalankan? Inilah Cara Mengetahuinya

  2. Bagaimana menjalankan perintah bash Linux dalam skrip PERL?

  3. Bagaimana cara men-debug permintaan HTTP yang dikirim, menunggu tanggapan?