2013-03-01 75 views
8

Hãy nghĩ về trường hợp này:Gỡ lỗi với pycharm, cách bước vào dự án, mà không cần nhập thư viện django

Tôi gỡ lỗi dự án Django và tôi đi qua mã (vào và ra). Trình gỡ lỗi đôi khi vào thư viện Django hoặc các thư viện bên ngoài khác.

Có ai biết cách ngăn trình gỡ lỗi nhập mã bên ngoài không? Hoặc ít nhất là một bước 'lớn' ra để có được trình gỡ lỗi trở lại mã dự án?

+2

Đặt một breakpoint trong mã của bạn và chạy với nó. – duffymo

+0

Bước qua cuộc gọi phương thức đến thư viện không hoạt động? –

+0

hãy xem tại đây: http: // stackoverflow.com/questions/11966276/ignore-exceptions-throw-and-caught-inside-a-library –

Trả lời

0

Mọi thứ trông giống như trình gỡ lỗi, nó không thể phân biệt mã của bạn hoặc mã của Django - tất cả đều là Python. Vì vậy, nó sẽ chạy tất cả mọi thứ, tuy nhiên nếu bạn muốn ngăn chặn nó từ khoan xuống quá thấp, bạn sẽ phải bắt đầu "bước qua" dòng mã thay vì "bước vào" chúng.

Theo số PyCharm docs bạn sẽ muốn sử dụng F8 khi nào bạn nhìn thấy một dòng mã trông giống như nó có thể là cổng vào nội bộ của Django. Nếu bạn vô tình tìm thấy chính mình bên trong mã nguồn của Django, bạn có thể nhấn Shift+F8 cho đến khi bạn ra khỏi nó.

+2

Cảm ơn các bạn đã trả lời! Thật vậy Shift + F8 là những gì tôi đã sử dụng cho đến nay, tôi chỉ thấy nó tẻ nhạt và lãng phí thời gian. Mặc dù đôi khi tôi sẽ nhìn vào mã của Django, hầu hết thời gian tôi nhìn vào dự án của tôi. Có thể nó sẽ là một tính năng trong các phiên bản tương lai của PyCharm. – Dan

+0

Nó sẽ không phải là một tính năng trong các phiên bản sau, vì nó không cần thiết. Điểm ngắt và bước qua các dòng mã đã giải quyết vấn đề này. – Matt

+2

* nó không thể phân biệt giữa mã của bạn hoặc mã của Django * Bằng cách thiết lập một breakpoint bạn nói với trình gỡ lỗi nơi để dừng lại. Tại sao bạn nghĩ rằng không thể có một cách để nói với trình gỡ lỗi nơi không dừng lại? Xem câu hỏi [Làm thế nào tôi có thể cấu hình Qt Creator và/hoặc gdb để trong khi gỡ lỗi chương trình của tôi bằng cách sử dụng thư viện Qt trình gỡ lỗi sẽ tránh bước vào các tập tin nguồn của Qt?] (Http://stackoverflow.com/q/1448426/95735) cho thấy có một cơ chế như vậy trong 'gdb'. Nếu một trình gỡ rối có tính năng này, các trình gỡ rối khác cũng có thể có. –

6

Có ai biết cách ngăn trình gỡ lỗi nhập mã bên ngoài không?

Có, Dmitry Trofimov knows;

(...) thêm module bạn không muốn theo dõi để dict DONT_TRACE trong <pycharm-distr>/helpers/pydev/pydevd.py
Đó là một giải pháp hacky (...)

Nếu bạn muốn tính năng này để được ít hacky bạn có thể bỏ phiếu vào nó bằng cách truy cập vấn đề
PY-9101 Implement "Do not step into the classes" option for Python debugger


Những người sử dụng pdb có thể quan tâm để biết rằng có một tính năng như vậy trong pdb;

Bắt đầu với Python 3.1, Pdb lớp có một cuộc tranh luận mới gọi là skip -

class pdb.Pdb(completekey='tab', stdin=None, stdout=None, skip=None, nosigint=False)

Đối số bỏ qua, nếu có, phải là một iterable của glob kiểu mẫu mô-đun tên. Trình gỡ lỗi sẽ không bước vào các khung có nguồn gốc trong mô-đun khớp với một trong các mẫu này. 1

1 Cho dù khung được xem là có nguồn gốc trong một mô-đun nhất định là được xác định bởi __name__ trong hình cầu khung.

Ví dụ được đưa ra trong các tài liệu cho thấy làm thế nào để bỏ qua các gói của Django -

import pdb; pdb.Pdb(skip=['django.*']).set_trace()

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