2014-12-11 13 views
6

Nếu tôi sử dụng trình gỡ lỗi, hầu hết các lần tôi chỉ muốn xem thông dịch viên làm gì trong mã của tôi. Tôi muốn bước qua tất cả các mã của khuôn khổ và thư viện tôi sử dụng.Trình gỡ lỗi Python hỗ trợ Quyền anh Đen?

AFAIK này được gọi là Đấm bốc đen.

Làm cách nào tôi có thể thực hiện việc này với Python ipdb hoặc trình gỡ lỗi Python khác?

Hãy tưởng tượng điều này:

Tôi sử dụng khung orm mà tôi tin tưởng và không muốn gỡ lỗi.

cut_hair_method(orm_object.user) 

Phương pháp cut_hair_method() là của tôi và tôi muốn gỡ lỗi.

orm_object là từ khuôn khổ tôi sử dụng. Trình gỡ lỗi sẽ bước vào mã orm và thực hiện một số điều đặc biệt mà tôi không quan tâm. Tôi không có cách nào để nói với trình gỡ rối: Đừng nhảy vào mã orm!

Cập nhật

Đối với trường hợp của tôi nó sẽ rất dễ dàng để quyết định mã nên được trong hộp đen và có mã không: Mã trong $VIRTUAL_ENV/src/ không có trong hộp đen, tất cả các mã khác được. Ngoại trừ tôi một cách rõ ràng nói với trình gỡ rối một cái gì đó khác.

Update2

tôi có tên "Black Boxing" từ bài viết này: https://hacks.mozilla.org/2013/08/new-features-of-firefox-developer-tools-episode-25/

+0

Bất kỳ trình gỡ lỗi tốt nào đều có các lệnh "bước qua". Black-Boxing là nhiều hơn là chỉ gỡ lỗi. Black-boxing là một ý tưởng tập trung xung quanh cách thử nghiệm (và không gỡ lỗi) các ứng dụng. –

+0

Tôi đã thêm một ví dụ. AFAIK "bước qua" là không thể ở khắp mọi nơi. – guettli

+1

Thay vì sử dụng bước trên nếu điều đó không làm việc cho bạn - tại sao không đặt điểm ngắt trong 'cut_hair_method, và sau đó chạy .... tôi dường như nhớ IDLE IDE có danh sách đen các mô-đun không đi qua , nhưng tôi cũng có vẻ nhớ nó đã không làm việc quá tốt (khi tôi sử dụng nó vài năm trước đây - tôi có thể là sai mặc dù). –

Trả lời

4

Các Python lớp cơ sở debugger (bdb.Bdb) có một thuộc tính .skip, đưa ra một danh sách các tên mô-đun để bỏ qua. Bạn có thể cung cấp danh sách này khi khởi tạo trình gỡ rối, hoặc sau đó. Nếu bạn muốn cung cấp một danh sách tiêu cực (danh sách các mô-đun của riêng bạn), hoặc tính toán liệu một mô-đun có bị bỏ qua hay không, bạn có thể phân lớp lớp trình gỡ lỗi và ghi đè is_skipped_module.

0

Kể từ PyCharm phiên bản 4.5 có một tính năng gọi là "Bước vào mã của tôi": https://www.jetbrains.com/pycharm/whatsnew/#StepIntoCode

Nó hoạt động. Tôi trường hợp của tôi, tôi chỉ muốn bước vào mã của tôi (ứng dụng Django), nhưng không vào mã của django chính nó. Cắt ngắn mặc định là phức tạp (alt-shift-F7) nhưng rất dễ thay đổi.

Sự cố liên quan: https://youtrack.jetbrains.com/issue/PY-14789

Các vấn đề liên quan