2011-09-15 45 views
12

Tôi sử dụng Notepad ++ để viết và chạy các tập lệnh Python. Nó là một trình soạn thảo văn bản tuyệt vời, ngoại trừ gỡ lỗi. Có cách nào để bước qua mã, sử dụng điểm break, xem giá trị biến vv trong Notepad ++ như bạn có thể trong Visual Studio?Gỡ lỗi mã Python trong Notepad ++

Trả lời

10

Liệu như một plug-in hiện hữu? Không phải là tôi biết. Tôi đồng ý hoàn toàn với qor72 trên ghi chú đó.

Có thể tạo plugin/chức năng như vậy không? Có thể.

Sau khi thực hiện một số thao tác nhanh, tôi đã tìm thấy một plugin trông đầy hứa hẹn, Python Script. Trong ngắn hạn, nó cho phép bạn chạy các script python có thể truy cập các mô-đun NPP (các menu tập tin vv ...) cũng như Scintilla Methodsxuất hiện để cấp quyền truy cập vào những thứ như các điểm đánh dấu trên các trang.

Để thực hiện một kỳ công như vậy tôi có thể thấy nhiệm vụ là đã đột nhập vào một vài khối lớn (tôi cảm thấy một dự án mã nguồn mở mới sắp về ...)

  • Sử dụng Python Script, tích hợp các python debugger(PDB) như được Shashi nhắc đến.
  • Sử dụng phương pháp Scintilla, thêm dấu vết cuộc gọi trở lại nơi dấu NPP được đặt
  • Chuyển hướng PDB và xử lý chúng để hiển thị vị trí tệp dừng lại (một lần nữa sử dụng phương pháp Scintilla).
  • Trong khi tại điểm ngắt mới được tạo và sử dụng PDB xác định tất cả các biến trong không gian tên hiện tại.Hãy thông tin này và đổ nó vào một cửa sổ CMD, hoặc nếu bạn muốn nhận được ưa thích một số GUI tạo ra với Tk/wxPython

Đóng Suy nghĩ
Trong khi tôi nghĩ rằng nó có thể tạo ra một plug như vậy trong, tôi sẽ hoàn toàn là một cam kết. Dọc theo dòng đó, bạn có thể nên cố gắng tìm một trình soạn thảo khác đã được tích hợp sẵn và chỉ cần tạo macro (hoặc bất kỳ IDE nào gọi chúng) để thêm vào những thứ bạn thích nhất về NPP.

Xin lưu ý rằng tôi là người dùng NPP hàng ngày và đã nhiều năm để tôi hiểu rõ lý do tại sao bạn muốn thêm chức năng vào NPP. Một trong những điều yêu thích của tôi về NPP là tốc độ mà nó mở ra và tìm kiếm các tập tin ... chuyển sang một IDE mở rộng, IMO, sẽ không đáng với tôi.

Luồng công việc hiện tại của tôi là thực hiện tất cả chỉnh sửa của tôi trong NPP và chỉ cần nhấp đúp để chạy mô-đun. Nếu nó không thành công hoặc bị tắt trong cỏ dại, tôi khởi động IDLE để gỡ lỗi nó.

8

Tôi thực sự hy vọng ai đó nói với tôi rằng tôi sai (Tôi rất muốn có tính năng đó trong Notepad ++), nhưng Notepad ++ được thiết kế như một trình soạn thảo lập trình chứ không phải IDE. Mặc dù nó có rất nhiều chức năng tuyệt vời nhưng mức độ gỡ lỗi đó không phải là một phần của công cụ cốt lõi.

Không thấy bất kỳ điều gì trong số npp-plugins.

5

Tôi nghĩ python debugger là lựa chọn tốt nhất nếu biên tập viên không cung cấp cơ sở :)

Quick guide:

from pdb import set_trace as bp 

code 
code 
bp() 
code 
code 

Tại (Pdb) nhắc, nhập s bước, p foo in fooc để tiếp tục thực thi mã cho đến khi nhấn một điểm ngắt khác.

+0

Xem http://stackoverflow.com/questions/6980749/simpler-way-to-put-pdb-breakpoints-in-python-code để sử dụng. –

2

Bạn đã nghĩ đến việc sử dụng Komodo chưa. Đó là mã nguồn mở và có các cổng cho Windows, Linux và MAC (tôi nghĩ).

Đây có thể là một sự thay thế, và nếu bạn muốn có một số lời khuyên từ notepad ++ người dùng, có một cái nhìn tại bưu sau trên trang web này rất:

Komodo Edit and Notepad++ ::: Pros & Cons ::: Python dev

Một số người dùng máy điện hạt nhân ở đây dường như đã thực hiện các chuyển để chỉnh sửa python chạy vv ...

cá nhân tôi không biết nhiều về gỡ lỗi trên Komodo nhưng vì nó là một IDE như vậy sẽ ngạc nhiên nếu bạn không thể làm điều đó một cách dễ dàng

2

Tôi không thực sự thấy lý do tại sao Shashi's answer chưa được tăng hạng. Đối với các liên kết mà ông đã cung cấp cho nguồn cung cấp một cách để bước qua các kịch bản python như OP đã yêu cầu.

Vì vậy, đối với tất cả những người không biết về mô-đun pdb, khi nhập khẩu, hàm pdb.set_trace() cho phép một bước đi qua khu vực mã sau đó. Và nó rất giống với phương pháp gỡ lỗi của visual studio. Trong khi bạn đang bước qua mã, bạn có thể nhập một loạt các lệnh.

Một trong số đó là p <expression> và cho phép người dùng in trạng thái hiện tại của các biến trong phạm vi địa phương và toàn cầu.

+0

Thiếu thông tin và rủi ro liên kết đã chết. –