Tiện ích mở rộng Python hỗ trợ gỡ lỗi một số loại ứng dụng Python. Để biết hướng dẫn ngắn về cách gỡ lỗi cơ bản, hãy xem Hướng dẫn - Định cấu hình và chạy trình gỡ lỗi. Cũng xem hướng dẫn Flask. Cả hai hướng dẫn đều thể hiện các kỹ năng cốt lõi như thiết lập điểm dừng và duyệt qua mã
Đối với các tính năng gỡ lỗi chung chẳng hạn như kiểm tra các biến, đặt điểm dừng và các hoạt động khác không phụ thuộc vào ngôn ngữ, hãy xem lại phần gỡ lỗi Mã VS
Bài viết này chủ yếu giải quyết các cấu hình gỡ lỗi dành riêng cho Python, bao gồm các bước cần thiết cho các loại ứng dụng cụ thể và gỡ lỗi từ xa
Khởi tạo cấu hình
Cấu hình điều khiển hành vi của Mã VS trong phiên gỡ lỗi. Các cấu hình được xác định trong tệp
Chọn tạo khởi chạy. json (được phác thảo trong hình trên) hoặc sử dụng lệnh menu Chạy > Mở cấu hình
Một menu cấu hình sẽ mở ra từ Bảng lệnh cho phép bạn chọn loại cấu hình gỡ lỗi mà bạn muốn cho tệp đã mở. Hiện tại, trong menu Chọn cấu hình gỡ lỗi xuất hiện, hãy chọn Tệp Python.
Ghi chú. Bắt đầu phiên gỡ lỗi thông qua Bảng gỡ lỗi, F5 hoặc Chạy > Bắt đầu gỡ lỗi khi không có cấu hình cũng sẽ hiển thị menu cấu hình gỡ lỗi, nhưng sẽ không tạo . tập tin json.
1 chứa cấu hình được xác định trước dựa trên những gì bạn đã chọn trước đó, trong trường hợp này là Tệp Python. Bạn có thể sửa đổi cấu hình (ví dụ: để thêm đối số) và cũng có thể thêm cấu hình tùy chỉnh
Chi tiết về các thuộc tính cấu hình sẽ được đề cập sau trong bài viết này trong phần Cấu hình tiêu chuẩn và các tùy chọn. Các cấu hình khác cũng được mô tả trong bài viết này trong Gỡ lỗi các loại ứng dụng cụ thể
cấu hình bổ sung
Theo mặc định, Mã VS chỉ hiển thị các cấu hình phổ biến nhất được cung cấp bởi tiện ích mở rộng Python. Bạn có thể chọn các cấu hình khác để đưa vào
1. Khi bạn sử dụng lệnh, Mã VS sẽ nhắc bạn với danh sách tất cả các cấu hình có sẵn (hãy chắc chắn chọn tùy chọn Python)
Chọn Đính kèm bằng ID quy trình sẽ mang lại kết quả như sau.
Xem Gỡ lỗi các loại ứng dụng cụ thể để biết chi tiết về tất cả các cấu hình này
Trong khi gỡ lỗi, Thanh trạng thái hiển thị cấu hình hiện tại và trình thông dịch gỡ lỗi hiện tại. Chọn cấu hình sẽ hiển thị danh sách từ đó bạn có thể chọn cấu hình khác
Theo mặc định, trình gỡ lỗi sử dụng cùng một trình thông dịch được chọn cho không gian làm việc của bạn, giống như các tính năng khác của tiện ích mở rộng Python cho Mã VS. Để sử dụng một trình thông dịch khác để gỡ lỗi cụ thể, hãy đặt giá trị cho
1 cho cấu hình trình gỡ lỗi hiện hành. Ngoài ra, hãy chọn trình thông dịch có tên trên Thanh trạng thái để chọn một trình thông dịch khác
Gỡ lỗi cơ bản
Nếu bạn chỉ quan tâm đến việc gỡ lỗi tập lệnh Python, cách đơn giản nhất là chọn mũi tên xuống bên cạnh nút chạy trên trình chỉnh sửa và chọn Gỡ lỗi tệp Python trong Terminal
Nếu bạn đang tìm cách gỡ lỗi ứng dụng web bằng Flask, Django hoặc FastAPI, tiện ích mở rộng Python cung cấp cấu hình gỡ lỗi được tạo động dựa trên cấu trúc dự án của bạn trong tùy chọn Hiển thị tất cả cấu hình gỡ lỗi tự động, thông qua chế độ xem Chạy và Gỡ lỗi
Nhưng nếu bạn đang tìm cách gỡ lỗi các loại ứng dụng khác, bạn có thể khởi động trình gỡ lỗi thông qua chế độ xem Chạy bằng cách nhấp vào nút Chạy và Gỡ lỗi
Khi chưa đặt cấu hình nào, bạn sẽ được cung cấp một danh sách các tùy chọn gỡ lỗi. Tại đây, bạn có thể chọn tùy chọn thích hợp để nhanh chóng gỡ lỗi mã của mình
Hai tùy chọn phổ biến là sử dụng cấu hình Tệp Python để chạy tệp Python hiện đang mở hoặc sử dụng cấu hình Đính kèm sử dụng ID tiến trình để đính kèm trình gỡ lỗi vào một quy trình đang chạy
Để biết thông tin về cách tạo và sử dụng cấu hình gỡ lỗi, hãy xem phần Khởi tạo cấu hình và Cấu hình bổ sung. Khi một cấu hình được thêm vào, nó có thể được chọn từ danh sách thả xuống và bắt đầu sử dụng nút Bắt đầu gỡ lỗi
Gỡ lỗi dòng lệnh
Trình gỡ lỗi cũng có thể được chạy từ dòng lệnh. Cú pháp dòng lệnh của trình gỡ lỗi như sau
________số 8
Ví dụ: từ dòng lệnh, bạn có thể khởi động trình gỡ lỗi bằng một cổng đã chỉ định (5678) và tập lệnh bằng cú pháp sau. Ví dụ này giả định rằng tập lệnh đang chạy lâu và bỏ qua cờ
21, bạn đang mở một cổng để cho phép truy cập từ bất kỳ máy nào, điều này có rủi ro về bảo mật. Bạn nên đảm bảo rằng bạn đang thực hiện các biện pháp phòng ngừa bảo mật thích hợp, chẳng hạn như sử dụng đường hầm SSH, khi thực hiện gỡ lỗi từ xa
22Required. Specifies the host address and port for the debug adapter server to wait for incoming connections (--listen) or to connect with a client that is waiting for an incoming connection (--connect). This is the same address that is used in the VS Code debug configuration. By default, the host address is
23.--wait-for-clientnoneOptional. Specifies that the code should not run until there's a connection from the debug server. This setting allows you to debug from the first line of your code.--log-to
24Optional. Specifies a path to an existing directory for saving logs.--log-to-stderrnoneOptional. Enables debugpy to write logs directly to stderr.--pid
26Optional. Sets a debug property that must be known to the debug server before the client connects. Such properties can be used directly in launch configuration, but must be set in this manner for attach configurations. For example, if you don't want the debug server to automatically inject itself into subprocesses created by the process you're attaching to, use
28 có thể được sử dụng để truyền các đối số dòng lệnh cho ứng dụng đang được khởi chạy
Gỡ lỗi bằng cách đính kèm qua kết nối mạng
Gỡ lỗi tập lệnh cục bộ
Có thể có những trường hợp bạn cần gỡ lỗi tập lệnh Python được gọi cục bộ bởi một quy trình khác. Ví dụ: bạn có thể đang gỡ lỗi một máy chủ web chạy các tập lệnh Python khác nhau cho các công việc xử lý cụ thể. Trong những trường hợp như vậy, bạn cần đính kèm trình gỡ lỗi Mã VS vào tập lệnh sau khi nó được khởi chạy
Chạy Mã VS, mở thư mục hoặc không gian làm việc chứa tập lệnh và tạo một
Chuyển sang chế độ xem Chạy và Gỡ lỗi ( ⇧⌘D (Windows, Linux Ctrl+Shift . )), select the appropriate configuration from the debugger dropdown list, and start the debugger.
33, từ thời điểm đó bạn có thể sử dụng trình gỡ lỗi bình thường. Bạn cũng có tùy chọn đặt các điểm dừng khác trong mã tập lệnh bằng giao diện người dùng thay vì sử dụng
Gỡ lỗi từ xa cho phép bạn duyệt qua một chương trình cục bộ trong Mã VS khi chương trình đó chạy trên máy tính từ xa. Không cần cài đặt Mã VS trên máy tính từ xa. Để tăng cường bảo mật, bạn có thể muốn hoặc cần sử dụng kết nối an toàn, chẳng hạn như SSH, tới máy tính từ xa khi gỡ lỗi
Ghi chú. Trên máy tính Windows, bạn có thể cần cài đặt Windows 10 OpenSSH để có lệnh
Các bước sau phác thảo quy trình chung để thiết lập đường hầm SSH. Đường hầm SSH cho phép bạn làm việc trên máy cục bộ của mình như thể bạn đang làm việc trực tiếp trên điều khiển từ xa theo cách an toàn hơn so với khi một cổng được mở để truy cập công khai
Trên máy tính từ xa
Kích hoạt tính năng chuyển tiếp cổng bằng cách mở tệp cấu hình
44 phải là địa chỉ IP riêng của máy tính từ xa. Sau đó, bạn có thể khởi chạy chương trình bình thường, khiến chương trình tạm dừng cho đến khi trình gỡ lỗi đính kèm
Khởi chạy quy trình từ xa thông qua gỡ lỗi, chẳng hạn
Máy tính cục bộ. Chỉ khi bạn sửa đổi mã nguồn trên máy tính từ xa như đã nêu ở trên, thì trong mã nguồn, hãy thêm một bản sao đã nhận xét của cùng một mã được thêm vào trên máy tính từ xa. Việc thêm các dòng này đảm bảo rằng mã nguồn trên cả hai máy tính khớp với từng dòng
Máy tính cục bộ. chuyển sang chế độ xem Chạy và Gỡ lỗi ( ⇧⌘D (Windows, Linux Ctrl+Shift+D)) in VS Code, select the Python: Attach configuration
Máy tính cục bộ. đặt điểm dừng trong mã mà bạn muốn bắt đầu gỡ lỗi
Máy tính cục bộ. bắt đầu trình gỡ lỗi Mã VS bằng cách sử dụng Python đã sửa đổi. Đính kèm cấu hình và nút Bắt đầu gỡ lỗi. Mã VS sẽ dừng trên các điểm dừng được đặt cục bộ của bạn, cho phép bạn duyệt qua mã, kiểm tra các biến và thực hiện tất cả các hành động gỡ lỗi khác. Các biểu thức mà bạn nhập trong Bảng điều khiển gỡ lỗi cũng được chạy trên máy tính từ xa
Xuất văn bản ra thiết bị xuất chuẩn, như từ câu lệnh
81, xuất hiện trên cả hai máy tính. Tuy nhiên, các đầu ra khác, chẳng hạn như các sơ đồ đồ họa từ một gói như matplotlib, chỉ xuất hiện trên máy tính từ xa
Trong quá trình gỡ lỗi từ xa, thanh công cụ gỡ lỗi xuất hiện như bên dưới
Trên thanh công cụ này, nút ngắt kết nối ( ⇧F5 (Windows, Linux Shift+F5< . Nút khởi động lại ()) stops the debugger and allows the remote program to run to completion. The restart button (⇧⌘F5 (Windows, Linux Ctrl+Shift+F5)) restarts the debugger on the local computer but does not restart the remote program. Use the restart button only when you've already restarted the remote program and need to reattach the debugger.
1 lần đầu tiên, có hai cấu hình tiêu chuẩn chạy tệp hoạt động trong trình chỉnh sửa ở thiết bị đầu cuối tích hợp (bên trong Mã VS) hoặc thiết bị đầu cuối bên ngoài (bên ngoài Mã VS)
14, thường được sử dụng trong cấu hình mặc định, sử dụng tệp hiện đang hoạt động trong trình chỉnh sửa. Bằng cách chỉ định một tệp khởi động cụ thể, bạn luôn có thể chắc chắn khởi chạy chương trình của mình với cùng một điểm vào bất kể tệp nào đang mở. Ví dụ
Ngoài ra, bạn có thể sử dụng biến môi trường tùy chỉnh được xác định trên mỗi nền tảng để chứa đường dẫn đầy đủ tới trình thông dịch Python để sử dụng, do đó không cần đường dẫn thư mục nào khác
Nếu bạn cần truyền đối số cho trình thông dịch Python, bạn có thể sử dụng thuộc tính
Chỉ định các đối số để chuyển đến chương trình Python. Ví dụ: mỗi phần tử của chuỗi đối số được phân tách bằng dấu cách phải được chứa trong dấu ngoặc kép
009, xác định rằng cấu hình chỉ nên được sử dụng khi truy cập nút Chạy tệp Python ở phía trên bên phải của trình chỉnh sửa (bất kể tùy chọn Chạy tệp Python hoặc Gỡ lỗi tệp Python mà nút cung cấp được sử dụng). Ghi chú. Không thể sử dụng tùy chọn
Cho phép tự động tải lại trình gỡ lỗi khi các thay đổi được thực hiện đối với mã sau khi quá trình thực thi trình gỡ lỗi đạt điểm dừng. Để bật tính năng này, hãy đặt
*Ghi chú. Khi trình gỡ lỗi thực hiện tải lại, mã chạy khi nhập có thể được thực thi lại. Để tránh tình trạng này, hãy cố gắng chỉ sử dụng nhập, hằng số và định nghĩa trong mô-đun của bạn, đặt tất cả mã vào các hàm. Ngoài ra, bạn cũng có thể sử dụng séc
Chỉ định thư mục làm việc hiện tại cho trình gỡ lỗi, là thư mục cơ sở cho bất kỳ đường dẫn tương đối nào được sử dụng trong mã. Nếu bỏ qua, mặc định là
Đặt các biến môi trường tùy chọn cho quy trình trình gỡ lỗi ngoài các biến môi trường hệ thống mà trình gỡ lỗi luôn kế thừa. Các giá trị cho các biến này phải được nhập dưới dạng chuỗi
36, sẽ kích hoạt các tính năng sửa lỗi dành riêng cho khung tạo khuôn mẫu Jinja
Điểm dừng và điểm đăng nhập
Tiện ích mở rộng Python hỗ trợ các điểm dừng và điểm đăng nhập để gỡ lỗi mã. Để biết hướng dẫn ngắn về gỡ lỗi cơ bản và sử dụng điểm dừng, hãy xem Hướng dẫn - Định cấu hình và chạy trình gỡ lỗi
Điểm dừng có điều kiện
Điểm dừng cũng có thể được đặt để kích hoạt dựa trên biểu thức, số lần truy cập hoặc kết hợp cả hai. Tiện ích mở rộng Python hỗ trợ số lần truy cập là số nguyên, ngoài các số nguyên đứng trước các toán tử ==, >, >=, <, <= và %. Ví dụ: bạn có thể đặt điểm dừng để kích hoạt sau năm lần xuất hiện bằng cách đặt số lần truy cập là
056 hoặc phần giữa của câu lệnh nhiều dòng. Trong những trường hợp như vậy, việc chạy trình gỡ lỗi sẽ di chuyển điểm dừng đến dòng hợp lệ gần nhất để đảm bảo rằng việc thực thi mã dừng tại điểm đó
Gỡ lỗi các loại ứng dụng cụ thể
Trình đơn thả xuống cấu hình cung cấp nhiều tùy chọn khác nhau cho các loại ứng dụng chung
ConfigurationDescriptionAttachXem Gỡ lỗi từ xa trong phần trước. Django Chỉ định ________ 1057, ________ 1058. Cũng thêm
048, trong trường hợp đó hãy sửa đổi cấu hình để chỉ tham chiếu đến tên tệp. Nếu không, bạn có thể thấy lỗi "Không thể nhập mô-đun C" trong đó C là ký tự ổ đĩa. )
Có nhiều lý do tại sao trình gỡ lỗi có thể không hoạt động. Đôi khi bảng điều khiển gỡ lỗi tiết lộ các nguyên nhân cụ thể, nhưng các lý do chính như sau
Đường dẫn đến tệp thực thi python không chính xác. kiểm tra đường dẫn của trình thông dịch đã chọn của bạn bằng cách chạy Python. Chọn lệnh Thông dịch viên và xem giá trị hiện tại
Có các biểu thức không hợp lệ trong cửa sổ xem. xóa tất cả các biểu thức khỏi cửa sổ Xem và khởi động lại trình gỡ lỗi
Nếu bạn đang làm việc với một ứng dụng đa luồng sử dụng API luồng gốc (chẳng hạn như hàm Win32
Nếu bạn đang làm việc với hệ thống Linux, bạn có thể nhận được thông báo lỗi "hết thời gian chờ" khi cố gắng áp dụng trình gỡ lỗi cho bất kỳ quy trình đang chạy nào. Để ngăn chặn điều này, bạn có thể tạm thời chạy lệnh sau