Bagaimana saya bisa men-debug skrip python dari baris perintah menggunakan PyCharm?

Saya ingin men-debug skrip Python yang menggunakan beberapa argumen baris perintah, seperti

myscript.py --input1 ./dir/file1.txt --input2 ./dir/file2.txt

di Pycharm. Saya sadar, bahwa saya dapat menggunakan Run/Debug Configuration untuk menambahkan argumen baris perintah. Namun, saya merasa ini agak rumit karena saya harus membuka menu setiap kali ingin mengubah argumen. Selain itu, tidak ada penyelesaian nama file saat menentukan file sebagai argumen.

Saya lebih suka memanggil myscript.py dari shell favorit saya, di mana saya memiliki penyelesaian nama file dll., tapi tetap saja, gunakan debugger PyCharm pada skrip itu.


person Gregor Sturm    schedule 08.01.2016    source sumber
comment
Apa ide Anda tentang mendapatkan argumen dari kode Anda? Maksud saya mencoba mendapatkan argumen setelah menjalankan skrip. Seperti raw_input.   -  person kia    schedule 08.01.2016
comment
Anda harus mempelajari cara men-debug kode Anda menggunakan pengujian unit. Daripada menjalankan skrip dengan argumen, Anda harus mengimplementasikan fungsi do_awesome_work(input1, input2) dan menulis kasus uji dengan masukan yang sesuai. Anda kemudian dapat dengan mudah menjalankan kasus pengujian di bawah debugger PyCharm.   -  person awesoon    schedule 08.01.2016
comment
Apakah ada alasan Anda mencoba melakukan ini? Jika Anda mencoba melakukan debug dengan banyak masukan, mungkin ada baiknya Anda men-debug satu kasus dan menguji unit lainnya. Jika karena alasan tertentu Anda benar-benar perlu men-debug beberapa kasus, Anda mungkin ingin mengabaikan argumen untuk debugging tersebut, menetapkan nilai sebagai variabel, dan menguji apakah argumen baris perintah berfungsi secara terpisah.   -  person Daniel Underwood    schedule 08.01.2016


Jawaban (1)


Jawaban singkat: Tools> Attach to Process...

Jawaban panjang:

  1. Letakkan baris berikut di awal kode Anda

    input("press Enter to continue")
    
  2. Luncurkan kode Anda di shell

    myscript.py --input1 ./dir/file1.txt --input2 ./dir/file2.txt
    
  3. Buka Pycharm dan gunakan untuk membuka myscript.py Anda. Setel break points di mana pun Anda ingin melakukan debug. Pilih Tools> Attach to Process... dan pilih proses yang myscript.py sedang berjalan.

  4. Kembali ke shell myscript.py dan tekan Enter

Masalah yang mungkin Anda dapatkan: ptrace tidak memiliki izin melakukan sesuatu

Larutan:

sudo su
echo 0 > /proc/sys/kernel/yama/ptrace_scope

atau Anda dapat langsung menyetel 0

/etc/sysctl.d/10-ptrace.conf
person dragon2fly    schedule 08.01.2016
comment
Saya percaya bahwa dalam versi saat ini ditempatkan di bawah Run > Attach to Local Processes... - person AuHau; 08.08.2018