Hướng dẫn debug python vscode - gỡ lỗi python vscode
Phần mở rộng Python hỗ trợ gỡ lỗi một số loại ứng dụng Python. Để biết một đoạn ngắn của gỡ lỗi cơ bản, hãy xem Hướng dẫn - Cấu hình và chạy trình gỡ lỗi. Cũng xem hướng dẫn bình. Cả hai hướng dẫn đều thể hiện các kỹ năng cốt lõi như thiết lập các điểm dừng và bước qua mã. Show
Đối với các tính năng gỡ lỗi chung như kiểm tra các biến, thiết lập các điểm dừng và các hoạt động khác không phụ thuộc vào ngôn ngữ, xem lại so với gỡ lỗi mã. Bài viết này chủ yếu đề cập đến các cấu hình gỡ lỗi cụ thể của 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ìnhCấu hình điều khiển hành vi của mã trong phiên gỡ lỗi. Các cấu hình được xác định trong tệp 1 được lưu trữ trong thư mục 2 trong không gian làm việc của bạn.
Để khởi tạo cấu hình gỡ lỗi, trước tiên hãy chọn chế độ xem chạy trong thanh bên:Run view in the sidebar: Nếu bạn chưa có bất kỳ cấu hình nào được xác định, bạn sẽ thấy một nút để chạy và gỡ lỗi và liên kết để tạo tệp cấu hình (Launch.json):Run and Debug and a link to create a configuration (launch.json) file: Để tạo tệp 1 với cấu hình Python, hãy thực hiện các bước sau:
Các chi tiết về các thuộc tính cấu hình được đề cập sau trong bài viết này theo cấu hình và tùy chọn tiêu chuẩn. Các cấu hình khác cũng được mô tả trong bài viết này theo các loại ứng dụng cụ thể gỡ lỗi. Cấu hình bổ sungTheo 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 để bao gồm trong 1 bằng cách sử dụng lệnh Thêm cấu hình được hiển thị trong danh sách và trình chỉnh sửa 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):Add Configuration command shown in the list and the 1 editor. When you use the command, VS Code prompts you with a list of all available configurations (be sure to select the Python option):Chọn tệp đính kèm bằng ID Process, một mang lại kết quả sau:Attach using Process ID one yields the following result: 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 quá trình 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ẽ đưa ra một danh sách mà bạn có thể chọn một 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 7 trong 1 cho cấu hình trình gỡ lỗi hiện hành. Thay phiên, chọn trình thông dịch được đặt 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ảnNế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 nút xuống bên cạnh nút chạy trên trình chỉnh sửa và chọn Debug Python trong Terminal.Debug Python File in Terminal. Nếu bạn đang tìm cách gỡ lỗi một ứng dụng web bằng Flask, Django hoặc Fastapi, tiện ích mở rộng Python sẽ cung cấp các 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 cấu hình gỡ lỗi tự động, thông qua chế độ xem chạy và gỡ lỗi.Show all automatic debug configurations option, through the Run and Debug view. 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.Run view by clicking on the Run and Debug button. Khi không có cấu hình nào được đặt, 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 bạn. 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 tệp đính kèm bằng cấu hình ID Process để gắn trình gỡ lỗi vào một quy trình đã chạy.Python File configuration to run the currently open Python file or to use the Attach using Process ID configuration to attach the debugger to a process that is already running. Để biết thông tin về việc tạo và sử dụng các cấu hình gỡ lỗi, hãy xem các cấu hình khởi tạo và các phần 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.Start Debugging button. Dòng lệnh gỡ lỗiTrình gỡ lỗi cũng có thể được chạy từ dòng lệnh. Cú pháp dòng lệnh gỡ lỗi như sau:
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 được chỉ định (5678) và tập lệnh bằng cú pháp sau. Ví dụ này giả định tập lệnh dài và bỏ cờ 9, có nghĩa là tập lệnh sẽ không chờ đợi khách hàng đính kèm.
Sau đó, bạn sẽ sử dụng cấu hình sau để đính kèm từ phần mở rộng mã VS Python.
Nếu bạn muốn gỡ lỗi mã từ xa hoặc mã chạy trong thùng chứa Docker, trên máy từ xa hoặc container, bạn sẽ cần sửa đổi lệnh CLI trước đó để chỉ định máy chủ.
Tệp cấu hình liên quan sau đó sẽ trông như sau.
python -m debugpy --listen 0.0.0.0:5678 ./myscript.py 6Không bắt buộc. Đặt một thuộc tính gỡ lỗi phải được biết đến máy chủ gỡ lỗi trước khi máy khách kết nối. Các thuộc tính như vậy có thể được sử dụng trực tiếp trong cấu hình khởi chạy, nhưng phải được đặt theo cách này cho các cấu hình đính kèm. Ví dụ: nếu bạn không muốn máy chủ gỡ lỗi tự động tự tiêm vào các quy trình con được tạo bởi quy trình bạn đang gắn vào, hãy sử dụng python -m debugpy --listen 0.0.0.0:5678 ./myscript.py 7.Lưu ý: 8 có thể được sử dụng để chuyển các đối số dòng lệnh cùng với ứng dụng được khởi chạy.
Trong thiết bị đầu cuối, bắt đầu Python với tập lệnh, ví dụ, { "name": "Attach", "type": "python", "request": "attach", "connect": { "host": "remote-machine-name", // replace this with remote machine name "port": 5678 } } 1. Bạn sẽ thấy thông báo "chờ trình gỡ lỗi đính kèm" được bao gồm trong mã và tập lệnh dừng lại trong cuộc gọi { "name": "Attach", "type": "python", "request": "attach", "connect": { "host": "remote-machine-name", // replace this with remote machine name "port": 5678 } } 2.Chuyển sang chế độ xem chạy và gỡ lỗi (⇧⌘D (Windows, Linux Ctrl+Shift+D)), chọn cấu hình phù hợp từ danh sách thả xuống Debuger và khởi động trình gỡ lỗi.
Bản gỡ lỗi tập lệnh từ xa với SSH Gỡ lỗi từ xa cho phép bạn bước qua một chương trình cục bộ trong mã VS trong khi nó chạy trên một máy tính từ xa. Không cần thiết phải cài đặt mã vs trên máy tính từ xa. Để thêm 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, đến máy tính từ xa khi gỡ lỗi.
Trên máy tính cục bộ:
Bắt đầu gỡ lỗi Bây giờ một đường hầm SSH đã được thiết lập thành máy tính từ xa, bạn có thể bắt đầu gỡ lỗi.
Đặt tùy chọn cấu hìnhKhi bạn lần đầu tiên tạo 1, có hai cấu hình tiêu chuẩn chạy tệp hoạt động trong trình chỉnh sửa trong 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 (ngoài mã VS): 1Các cài đặt cụ thể được mô tả trong các phần sau. Bạn cũng có thể thêm các cài đặt khác, chẳng hạn như 3, không bao gồm trong các cấu hình tiêu chuẩn.
2{ "name": "Python: Attach", "type": "python", "request": "attach", "port": 5678, "host": "localhost", "pathMappings": [ { "localRoot": "${workspaceFolder}", // Maps C:\Users\user1\project1 "remoteRoot": "." // To current working directory ~/project1 } ] } 6Cung cấp tên cho cấu hình gỡ lỗi xuất hiện trong danh sách thả xuống mã VS. { "name": "Python: Attach", "type": "python", "request": "attach", "port": 5678, "host": "localhost", "pathMappings": [ { "localRoot": "${workspaceFolder}", // Maps C:\Users\user1\project1 "remoteRoot": "." // To current working directory ~/project1 } ] } 7Xác định loại trình gỡ lỗi để sử dụng; Để lại bộ này thành 7 cho mã Python.{ "name": "Python: Attach", "type": "python", "request": "attach", "port": 5678, "host": "localhost", "pathMappings": [ { "localRoot": "${workspaceFolder}", // Maps C:\Users\user1\project1 "remoteRoot": "." // To current working directory ~/project1 } ] } 9Chỉ định chế độ để bắt đầu gỡ lỗi:
import debugpy # Allow other computers to attach to debugpy at this IP address and port. debugpy.listen(('1.2.3.4', 5678)) # Pause the program until a remote debugger is attached debugpy.wait_for_client() 1Cung cấp đường dẫn đủ điều kiện đến mô -đun nhập của chương trình Python (tệp khởi động). Giá trị 4, thường được sử dụng trong các cấu hình mặc định, sử dụng tệp hiện đang hoạt động trong trình soạn thảo. 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 nhập bất kể tệp nào được mở. Ví dụ: 3Bạn cũng có thể dựa vào một con đường tương đối từ gốc không gian làm việc. Ví dụ: nếu gốc là 5 thì bạn có thể sử dụng ví dụ sau: 4import debugpy # Allow other computers to attach to debugpy at this IP address and port. debugpy.listen(('1.2.3.4', 5678)) # Pause the program until a remote debugger is attached debugpy.wait_for_client() 6Cung cấp khả năng chỉ định tên của một mô -đun sẽ được gỡ lỗi, tương tự như đối số 9 khi chạy tại dòng lệnh. Để biết thêm thông tin, hãy xem Python.org{ "name": "Python: Attach", "type": "python", "request": "attach", "connect": { "host": "localhost", "port": 5678 } } 7Con đường đầy đủ chỉ vào thông dịch viên Python sẽ được sử dụng để gỡ lỗi. Nếu không được chỉ định, cài đặt này mặc định cho trình thông dịch được chọn cho không gian làm việc của bạn, tương đương với việc sử dụng giá trị 9. Để sử dụng một trình thông dịch khác, thay vào đó chỉ định đường dẫn của nó trong thuộc tính 7 của cấu hình gỡ lỗi.Thay phiên, 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 toàn bộ đường dẫn đến trình thông dịch Python để sử dụng, để không cần đường dẫn thư mục khác. Nếu bạn cần chuyển các đối số cho trình thông dịch Python, bạn có thể sử dụng thuộc tính 1.python3 -m debugpy --listen 1.2.3.4:5678 --wait-for-client -m myproject 1Chỉ định các đối số để chuyển cho trình thông dịch Python bằng cách sử dụng cú pháp 3.{ "name": "Python: Attach", "type": "python", "request": "attach", "port": 5678, "host": "localhost", "pathMappings": [ { "localRoot": "${workspaceFolder}", // Maps C:\Users\user1\project1 "remoteRoot": "." // To current working directory ~/project1 } ] } 3Chỉ định các đối số để chuyển đến chương trình Python. Mỗi phần tử của chuỗi đối số được phân tách bởi một không gian phải được chứa trong các trích dẫn, ví dụ: 5python3 -m debugpy --listen 1.2.3.4:5678 --wait-for-client -m myproject 5Khi được đặt thành 6, phá vỡ trình gỡ lỗi ở dòng đầu tiên của chương trình được gỡ lỗi. Nếu bị bỏ qua (mặc định) hoặc được đặt thành 7, trình gỡ lỗi sẽ chạy chương trình đến điểm dừng đầu tiên.python3 -m debugpy --listen 1.2.3.4:5678 --wait-for-client -m myproject 8Chỉ định cách hiển thị đầu ra của chương trình miễn là mặc định cho 9 không được sửa đổi.
python -m debugpy --listen 5678 ./myscript.py 06Có nhiều hơn một cách để định cấu hình nút chạy, sử dụng tùy chọn 06. Đặt tùy chọn thành 08, xác định rằng cấu hình nên được sử dụng khi gỡ lỗi các kiểm tra trong mã VS. Tuy nhiên, đặt tùy chọn thành 09, xác định rằng cấu hình chỉ nên được sử dụng khi truy cập nút Run Python File trên đầu bên phải của trình soạn thảo (bất kể tệp Python chạy hay gỡ lỗi Tùy chọn tệp Python mà nút cung cấp được sử dụng) . Lưu ý: Tùy chọn 06 không thể được sử dụng để khởi động trình gỡ lỗi thông qua F5 hoặc Run> Bắt đầu gỡ lỗi.Run button, using the 06 option. Setting the option to 08, defines that the configuration should be used when debugging tests in VS Code. However, setting the option to 09, defines that the configuration should only be used when accessing the Run Python File button on the top-right of the editor (regardless of
whether the Run Python File or Debug Python File options the button provides is used). Note: The 06 option can't be used to start the debugger through F5 or Run > Start Debugging.python -m debugpy --listen 5678 ./myscript.py 11Cho phép tải lại tự động của trình gỡ lỗi khi các thay đổi được thực hiện để mã sau khi thực thi trình gỡ lỗi đã đạt đến điểm dừng. Để kích hoạt tính năng này, đặt 12 như được hiển thị trong mã sau. 6
python -m debugpy --listen 5678 ./myscript.py 14Chỉ định xem có cho phép gỡ lỗi phụ hay không. Mặc định là 7, được đặt thành 6 để bật. Để biết thêm thông tin, hãy xem gỡ lỗi đa mục tiêu.python -m debugpy --listen 5678 ./myscript.py 17Chỉ đị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ị bỏ qua, mặc định là 18 (thư mục mở trong mã VS).Ví dụ, giả sử 18 chứa thư mục 20 chứa 21 và thư mục 22 chứa 23. Nếu bạn bắt đầu trình gỡ lỗi trên 24, thì các đường dẫn tương đối đến tệp dữ liệu thay đổi tùy thuộc vào giá trị của 17:
python3 -m debugpy --listen 1.2.3.4:5678 --wait-for-client -m myproject 9Khi được đặt thành 6 (mặc định cho InternalConsole), khiến trình gỡ lỗi in tất cả đầu ra từ chương trình vào cửa sổ đầu ra gỡ lỗi mã vs. Nếu được đặt thành 7 (mặc định cho IntegratedTerminal và ExternalTerminal), đầu ra chương trình không được hiển thị trong cửa sổ đầu ra trình gỡ lỗi.Tùy chọn này thường bị vô hiệu hóa khi sử dụng 35 hoặc 36 vì không cần phải sao chép đầu ra trong bảng điều khiển gỡ lỗi.python -m debugpy --listen 5678 ./myscript.py 37Khi bị bỏ qua hoặc đặt thành 6 (mặc định), chỉ giới hạn gỡ lỗi thành mã viết người dùng. Đặt thành 7 để cho phép gỡ lỗi các chức năng thư viện tiêu chuẩn.python -m debugpy --listen 5678 ./myscript.py 40Khi được đặt thành 6, kích hoạt các tính năng gỡ lỗi cụ thể cho khung web Django.python -m debugpy --listen 5678 ./myscript.py 42Khi được đặt thành 6 và được sử dụng với 36, cho phép gỡ lỗi các ứng dụng yêu cầu độ cao. Sử dụng bảng điều khiển bên ngoài là cần thiết để nắm bắt mật khẩu.python -m debugpy --listen 5678 ./myscript.py 45Khi được đặt thành 6, đảm bảo rằng một ứng dụng kim tự tháp được khởi chạy với lệnh 47 cần thiết.python -m debugpy --listen 5678 ./myscript.py 48Đặt các biến môi trường tùy chọn cho quá 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 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. python -m debugpy --listen 5678 ./myscript.py 49Đường dẫn tùy chọn đến một tệp chứa các định nghĩa biến môi trường. Xem cấu hình môi trường Python - Tệp định nghĩa biến môi trường. python -m debugpy --listen 5678 ./myscript.py 50Nếu được đặt thành 6, hãy cho phép gỡ lỗi mã được đặt của Gevent Monkey.python -m debugpy --listen 5678 ./myscript.py 52Khi được đặt thành 6, kích hoạt các tính năng gỡ lỗi cụ thể cho khung khuôn mẫu Jinja.Điểm dừng và các điểm logpiTiện ích mở rộng Python hỗ trợ các điểm dừng và logpoint cho mã gỡ lỗi. Để biết một đoạn ngắn của việc gỡ lỗi cơ bản và sử dụng các điểm dừng, hãy xem Hướng dẫn - 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 các 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ượng hit là số nguyên, ngoài các số nguyên trước ==,>,> =,, Gọi một điểm dừng trong mãTrong mã Python của bạn, bạn có thể gọi 3 tại bất kỳ điểm nào bạn muốn tạm dừng trình gỡ lỗi trong phiên gỡ lỗi.Xác thực điểm dừngTiện ích mở rộng Python tự động phát hiện các điểm dừng được đặt trên các dòng không thể thực hiện được, chẳng hạn như các câu lệnh 56 hoặc ở giữa của một câu lệnh đa dòng. Trong những trường hợp như vậy, chạy trình gỡ lỗi di chuyển điểm dừng đến dòng hợp lệ gần nhất để đảm bảo rằng thực thi mã dừng tại thời điểm đó.Gỡ lỗi các loại ứng dụng cụ thểDropdown cấu hình cung cấp các tùy chọn khác nhau cho các loại ứng dụng chung:
Các bước cụ thể cũng cần thiết để gỡ lỗi từ xa và công cụ ứng dụng Google. Để biết chi tiết về các bài kiểm tra gỡ lỗi, xem xét nghiệm. Để gỡ lỗi một ứng dụng yêu cầu các đặc quyền quản trị viên, hãy sử dụng 36 và 71.Bình gỡ lỗi 7Như bạn có thể thấy, cấu hình này chỉ định 72 và 73. Thuộc tính 74 được sử dụng thay vì 1. .Cài đặt 63 cũng cho phép gỡ lỗi cho công cụ tạo khuôn Jinja mặc định của Flask.Nếu bạn muốn chạy máy chủ phát triển của Flask ở chế độ phát triển, hãy sử dụng cấu hình sau: 8Xử lý sự cố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 cho thấy các nguyên nhân cụ thể, nhưng những lý do chính như sau:
Bước tiếp theo
7/13/2022 |