Hướng dẫn how do you pass command line arguments in python vscode? - làm thế nào để bạn chuyển các đối số dòng lệnh trong python vscode?

Tôi đang chạy một chương trình Python có một số đối số dòng lệnh. Làm thế nào tôi có thể cung cấp các đối số này khi tôi đang xây dựng một chương trình trong mã Visual Studio?

Show

Hỏi ngày 14 tháng 10 năm 2016 lúc 7:03Oct 14, 2016 at 7:03

Hướng dẫn how do you pass command line arguments in python vscode? - làm thế nào để bạn chuyển các đối số dòng lệnh trong python vscode?

CerebrouCerebroucerebrou

4.94114 Huy hiệu vàng46 Huy hiệu bạc73 Huy hiệu đồng14 gold badges46 silver badges73 bronze badges

1

Bạn có thể chuyển các đối số vào chương trình bằng cách xác định các đối số trong cài đặt

python -m debugpy
    --listen | --connect
    [:]
    [--wait-for-client]
    [--configure- ]...
    [--log-to ] [--log-to-stderr]
     | -m  | -c  | --pid 
    []...
3 của Launch.json như được định nghĩa dưới đây:

json
{
    "name": "Python",
    "type": "python",
    "pythonPath":"${config.python.pythonPath}", 
    "request": "launch",
    "stopOnEntry": true,
    "console": "none",
    "program": "${file}",
    "cwd": "${workspaceRoot}",
    "args":["arg1", "arg2"],
    "env": {"name":"value"}
}

Thông tin thêm có thể được tìm thấy trên trang web tài liệu tại đây: https://github.com/donjayamanne/pythonvscode/wiki/debugging#args

Hướng dẫn how do you pass command line arguments in python vscode? - làm thế nào để bạn chuyển các đối số dòng lệnh trong python vscode?

Cory Kramer

Huy hiệu vàng 110K1515 gold badges158 silver badges208 bronze badges

Đã trả lời ngày 14 tháng 10 năm 2016 lúc 11:15Oct 14, 2016 at 11:15

DondonDon

6.4142 Huy hiệu vàng24 Huy hiệu bạc33 Huy hiệu đồng2 gold badges24 silver badges33 bronze badges

6

Nếu bạn sử dụng tiện ích mở rộng mã Runner, bạn có thể thêm phần sau vào cài đặt của mình (nhấp vào biểu tượng '{}' ở góc trên cùng bên phải để lấy tệp sempl.json):

"Code -Runner.executormap": {"Python": "$ pythonpath -u $ fullfilename xxx"}

trong đó xxx là đối số của bạn. Đây là một thay đổi toàn cầu vì vậy bạn phải thay đổi khi làm việc trên các tệp khác.

Đã trả lời ngày 18 tháng 5 năm 2019 lúc 13:37May 18, 2019 at 13:37

Hướng dẫn how do you pass command line arguments in python vscode? - làm thế nào để bạn chuyển các đối số dòng lệnh trong python vscode?

1

Một cách để làm điều đó trong phiên bản 2.0.0 là:

"command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200",

Đã trả lời ngày 29 tháng 3 năm 2019 lúc 14:16Mar 29, 2019 at 14:16

CerebrouCerebroucerebrou

4.94114 Huy hiệu vàng46 Huy hiệu bạc73 Huy hiệu đồng14 gold badges46 silver badges73 bronze badges

1

Bạn có thể chuyển các đối số vào chương trình bằng cách xác định các đối số trong cài đặt

python -m debugpy
    --listen | --connect
    [:]
    [--wait-for-client]
    [--configure- ]...
    [--log-to ] [--log-to-stderr]
     | -m  | -c  | --pid 
    []...
3 của Launch.json như được định nghĩa dưới đây:

Thông tin thêm có thể được tìm thấy trên trang web tài liệu tại đây: https://github.com/donjayamanne/pythonvscode/wiki/debugging#argsAug 3 at 16:00

Hướng dẫn how do you pass command line arguments in python vscode? - làm thế nào để bạn chuyển các đối số dòng lệnh trong python vscode?

1

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ã.

Đố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ình

Cấ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

python -m debugpy
    --listen | --connect
    [:]
    [--wait-for-client]
    [--configure- ]...
    [--log-to ] [--log-to-stderr]
     | -m  | -c  | --pid 
    []...
4 được lưu trữ trong thư mục
python -m debugpy
    --listen | --connect
    [:]
    [--wait-for-client]
    [--configure- ]...
    [--log-to ] [--log-to-stderr]
     | -m  | -c  | --pid 
    []...
5 trong không gian làm việc của bạn.

Lưu ý: Để thay đổi cấu hình gỡ lỗi, mã của bạn phải được lưu trữ trong thư mục.: To change debugging configuration, your code must be stored in a folder.

Để 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:

Hướng dẫn how do you pass command line arguments in python vscode? - làm thế nào để bạn chuyển các đối số dòng lệnh trong python vscode?

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:

Hướng dẫn how do you pass command line arguments in python vscode? - làm thế nào để bạn chuyển các đối số dòng lệnh trong python vscode?

Để tạo tệp

python -m debugpy
    --listen | --connect
    [:]
    [--wait-for-client]
    [--configure- ]...
    [--log-to ] [--log-to-stderr]
     | -m  | -c  | --pid 
    []...
4 với cấu hình Python, hãy thực hiện các bước sau:

  1. Chọn Liên kết Tệp Tạo Launch.Json (được nêu trong hình trên) hoặc sử dụng lệnh Run> Mở Cấu hình cấu hình.create a launch.json file link (outlined in the image above) or use the Run > Open configurations menu command.

  2. Menu cấu hình sẽ mở từ bảng lệnh cho phép bạn chọn loại cấu hình gỡ lỗi bạn muốn cho tệp đã mở. Hiện tại, trong chọn menu cấu hình gỡ lỗi xuất hiện, chọn tệp Python.Select a debug configuration menu that appears, select Python File.

    Hướng dẫn how do you pass command line arguments in python vscode? - làm thế nào để bạn chuyển các đối số dòng lệnh trong python vscode?

    Lưu ý: Bắt đầu một phiên gỡ lỗi thông qua bảng gỡ lỗi, F5 hoặc Run> Bắt đầu gỡ lỗi khi không có cấu hình nào tồn tại cũng sẽ hiển thị menu cấu hình gỡ lỗi, nhưng sẽ không tạo tệp Launch.json.: Starting a debugging session through the Debug Panel, F5 or Run > Start Debugging when no configuration exists will also bring up the debug configuration menu, but will not create a launch.json file.

  3. Phần mở rộng Python sau đó tạo và mở tệp

    python -m debugpy
        --listen | --connect
        [:]
        [--wait-for-client]
        [--configure- ]...
        [--log-to ] [--log-to-stderr]
         | -m  | -c  | --pid 
        []...
    
    4 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 đây, 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 thêm cấu hình tùy chỉnh.Python File. You can modify configurations (to add arguments, for example), and also add custom configurations.

    Hướng dẫn how do you pass command line arguments in python vscode? - làm thế nào để bạn chuyển các đối số dòng lệnh trong python vscode?

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ổ 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 để bao gồm trong

python -m debugpy
    --listen | --connect
    [:]
    [--wait-for-client]
    [--configure- ]...
    [--log-to ] [--log-to-stderr]
     | -m  | -c  | --pid 
    []...
4 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
python -m debugpy
    --listen | --connect
    [:]
    [--wait-for-client]
    [--configure- ]...
    [--log-to ] [--log-to-stderr]
     | -m  | -c  | --pid 
    []...
4. 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
python -m debugpy
    --listen | --connect
    [:]
    [--wait-for-client]
    [--configure- ]...
    [--log-to ] [--log-to-stderr]
     | -m  | -c  | --pid 
    []...
4 editor. When you use the command, VS Code prompts you with a list of all available configurations (be sure to select the Python option):

Hướng dẫn how do you pass command line arguments in python vscode? - làm thế nào để bạn chuyển các đối số dòng lệnh trong python vscode?

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:

Hướng dẫn how do you pass command line arguments in python vscode? - làm thế nào để bạn chuyển các đối số dòng lệnh trong python vscode?

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:

Hướng dẫn how do you pass command line arguments in python vscode? - làm thế nào để bạn chuyển các đối số dòng lệnh trong python vscode?

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

python -m debugpy --listen 5678 ./myscript.py
0 trong
python -m debugpy
    --listen | --connect
    [:]
    [--wait-for-client]
    [--configure- ]...
    [--log-to ] [--log-to-stderr]
     | -m  | -c  | --pid 
    []...
4 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ả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 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.

Hướng dẫn how do you pass command line arguments in python vscode? - làm thế nào để bạn chuyển các đối số dòng lệnh trong python vscode?

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.

Hướng dẫn how do you pass command line arguments in python vscode? - làm thế nào để bạn chuyển các đối số dòng lệnh trong python vscode?

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.

Hướng dẫn how do you pass command line arguments in python vscode? - làm thế nào để bạn chuyển các đối số dòng lệnh trong python vscode?

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.

Hướng dẫn how do you pass command line arguments in python vscode? - làm thế nào để bạn chuyển các đối số dòng lệnh trong python vscode?

Dòng lệnh gỡ lỗi

Trì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:

python -m debugpy
    --listen | --connect
    [:]
    [--wait-for-client]
    [--configure- ]...
    [--log-to ] [--log-to-stderr]
     | -m  | -c  | --pid 
    []...

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ờ

python -m debugpy --listen 5678 ./myscript.py
2, có nghĩa là tập lệnh sẽ không chờ đợi khách hàng đính kèm.

python -m debugpy --listen 5678 ./myscript.py

Sau đó, bạn sẽ sử dụng cấu hình sau để đính kèm từ phần mở rộng mã VS Python.

{
  "name": "Python: Attach",
  "type": "python",
  "request": "attach",
  "connect": {
    "host": "localhost",
    "port": 5678
  }
}

Lưu ý: Chỉ định máy chủ là tùy chọn để nghe, theo mặc định 127.0.0.1 được sử dụng.: Specifying host is optional for listen, by default 127.0.0.1 is used.

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ủ.

python -m debugpy --listen 0.0.0.0:5678 ./myscript.py

Tệp cấu hình liên quan sau đó sẽ trông như sau.

{
  "name": "Attach",
  "type": "python",
  "request": "attach",
  "connect": {
    "host": "remote-machine-name", // replace this with remote machine name
    "port": 5678
  }
}

Lưu ý: Lưu ý rằng khi bạn chỉ định giá trị máy chủ khác với

python -m debugpy --listen 5678 ./myscript.py
3 hoặc
python -m debugpy --listen 5678 ./myscript.py
4, bạn sẽ mở một cổng để cho phép truy cập từ bất kỳ máy nào, mang rủi ro 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 phù hợp, chẳng hạn như sử dụng các đường hầm SSH, khi thực hiện gỡ lỗi từ xa.
: Be aware that when you specify a host value other than
python -m debugpy --listen 5678 ./myscript.py
3 or
python -m debugpy --listen 5678 ./myscript.py
4 you are opening a port to allow access from any machine, which carries security risks. You should make sure that you're taking appropriate security precautions, such as using SSH tunnels, when doing remote debugging.

Lá cờTùy chọnSự mô tả
-Listen hoặc-kết nối or --connect
python -m debugpy --listen 5678 ./myscript.py
5
Yêu cầu. Chỉ định địa chỉ máy chủ và cổng cho máy chủ bộ điều hợp gỡ lỗi để chờ các kết nối đến (--listen) hoặc để kết nối với máy khách đang chờ kết nối đến (-kết nối). Đây là cùng một địa chỉ được sử dụng trong cấu hình gỡ lỗi mã VS. Theo mặc định, địa chỉ máy chủ là
python -m debugpy --listen 5678 ./myscript.py
6.
. 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
python -m debugpy --listen 5678 ./myscript.py
6.
--wait-for-client không aiKhông bắt buộc. Chỉ định rằng mã không nên chạy cho đến khi có kết nối từ máy chủ gỡ lỗi. Cài đặt này cho phép bạn gỡ lỗi từ dòng đầu tiên của mã.. 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
python -m debugpy --listen 5678 ./myscript.py
7
Không bắt buộc. Chỉ định một đường dẫn đến một thư mục hiện có để lưu nhật ký.. Specifies a path to an existing directory for saving logs.
--log-to-stderr không aiKhông bắt buộc. Chỉ định rằng mã không nên chạy cho đến khi có kết nối từ máy chủ gỡ lỗi. Cài đặt này cho phép bạn gỡ lỗi từ dòng đầu tiên của mã.. Enables debugpy to write logs directly to stderr.
--pid
python -m debugpy --listen 5678 ./myscript.py
7
Không bắt buộc. Chỉ định một đường dẫn đến một thư mục hiện có để lưu nhật ký.. Specifies a process that is already running to inject the debug server into.
--configure- Không bắt buộc. Cho phép Debugpy ghi nhật ký trực tiếp vào Stderr.
python -m debugpy --listen 5678 ./myscript.py
8
. 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
{
  "name": "Python: Attach",
  "type": "python",
  "request": "attach",
  "connect": {
    "host": "localhost",
    "port": 5678
  }
}
0.

Không bắt buộc. Chỉ định một quy trình đã chạy để tiêm máy chủ gỡ lỗi vào.:

{
  "name": "Python: Attach",
  "type": "python",
  "request": "attach",
  "connect": {
    "host": "localhost",
    "port": 5678
  }
}
1 can be used to pass command-line arguments along to the app being launched.

python -m debugpy --listen 5678 ./myscript.py 9

Khô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 { "name": "Python: Attach", "type": "python", "request": "attach", "connect": { "host": "localhost", "port": 5678 } } 0.

Lưu ý:

{
  "name": "Python: Attach",
  "type": "python",
  "request": "attach",
  "connect": {
    "host": "localhost",
    "port": 5678
  }
}
1 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.

  1. Gỡ lỗi bằng cách gắn qua kết nối mạng

  2. Gỡ lỗi kịch bản địa phương

    import debugpy
    
    # 5678 is the default attach port in the VS Code debug configurations. Unless a host and port are specified, host defaults to 127.0.0.1
    debugpy.listen(5678)
    print("Waiting for debugger attach")
    debugpy.wait_for_client()
    debugpy.breakpoint()
    print('break on this line')
    
  3. Có thể có những trường hợp bạn cần gỡ lỗi một kịch bản Python được gọi cục bộ bởi một quy trình khác. Ví dụ: bạn có thể 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 gắn Trình gỡ lỗi mã VS vào tập lệnh sau khi nó được khởi chạy:Terminal: Create New Terminal, which activates the script's selected environment.

  4. 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

    python -m debugpy
        --listen | --connect
        [:]
        [--wait-for-client]
        [--configure- ]...
        [--log-to ] [--log-to-stderr]
         | -m  | -c  | --pid 
        []...
    
    4 cho không gian làm việc đó nếu một người chưa tồn tại.

  5. Trong mã tập lệnh, thêm thông tin sau và lưu tệp:

  6. Mở thiết bị đầu cuối bằng thiết bị đầu cuối: Tạo thiết bị đầu cuối mới, kích hoạt môi trường đã chọn của tập lệnh.Run and Debug view (⇧⌘D (Windows, Linux Ctrl+Shift+D)), select the appropriate configuration from the debugger dropdown list, and start the debugger.

  7. Trong thiết bị đầu cuối, cài đặt gói gỡ lỗi với

    {
      "name": "Python: Attach",
      "type": "python",
      "request": "attach",
      "connect": {
        "host": "localhost",
        "port": 5678
      }
    }
    
    3.

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.

Lưu ý: Trên máy tính Windows, bạn có thể cần cài đặt Windows 10 OpenSsh để có lệnh

{
  "name": "Python: Attach",
  "type": "python",
  "request": "attach",
  "connect": {
    "host": "localhost",
    "port": 5678
  }
}
8.: On Windows computers, you may need to install Windows 10 OpenSSH to have the
{
  "name": "Python: Attach",
  "type": "python",
  "request": "attach",
  "connect": {
    "host": "localhost",
    "port": 5678
  }
}
8 command.

Các bước sau đây phác thảo quy trình chung để thiết lập một đường hầm SSH. Một đườ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 nếu một cổng được mở để truy cập công khai.

Trên máy tính từ xa:

  1. Bật chuyển tiếp cổng bằng cách mở tệp cấu hình

    {
      "name": "Python: Attach",
      "type": "python",
      "request": "attach",
      "connect": {
        "host": "localhost",
        "port": 5678
      }
    }
    
    9 (được tìm thấy trong
    python -m debugpy --listen 0.0.0.0:5678 ./myscript.py
    
    0 trên Linux và dưới
    python -m debugpy --listen 0.0.0.0:5678 ./myscript.py
    
    1 trên Windows) và thêm hoặc sửa đổi cài đặt sau:

    AllowTcpForwarding yes
    

    Lưu ý: Mặc định cho allowTcpForwarding là có, vì vậy bạn có thể không cần phải thay đổi.: The default for AllowTcpForwarding is yes, so you might not need to make a change.

  2. Nếu bạn phải thêm hoặc sửa đổi

    python -m debugpy --listen 0.0.0.0:5678 ./myscript.py
    
    2, hãy khởi động lại máy chủ SSH. Trên Linux/MacOS, chạy
    python -m debugpy --listen 0.0.0.0:5678 ./myscript.py
    
    3; Trên Windows, chạy
    python -m debugpy --listen 0.0.0.0:5678 ./myscript.py
    
    4, chọn OpenSSH hoặc
    python -m debugpy --listen 0.0.0.0:5678 ./myscript.py
    
    5 trong danh sách các dịch vụ và chọn Khởi động lại.Restart.

Trên máy tính cục bộ:

  1. Tạo một đường hầm SSH bằng cách chạy

    python -m debugpy --listen 0.0.0.0:5678 ./myscript.py
    
    6, sử dụng một cổng đã chọn cho
    python -m debugpy --listen 0.0.0.0:5678 ./myscript.py
    
    7 và tên người dùng thích hợp và địa chỉ IP của máy tính từ xa trong
    python -m debugpy --listen 0.0.0.0:5678 ./myscript.py
    
    8. Ví dụ: để sử dụng cổng 5678 trên địa chỉ IP 1.2.3.4, lệnh sẽ là
    python -m debugpy --listen 0.0.0.0:5678 ./myscript.py
    
    9. Bạn có thể chỉ định đường dẫn đến tệp nhận dạng, sử dụng cờ
    {
      "name": "Attach",
      "type": "python",
      "request": "attach",
      "connect": {
        "host": "remote-machine-name", // replace this with remote machine name
        "port": 5678
      }
    }
    
    0.

  2. Xác minh rằng bạn có thể thấy một lời nhắc trong phiên SSH.

  3. Trong không gian làm việc mã vs của bạn, hãy tạo cấu hình để gỡ lỗi từ xa trong tệp

    python -m debugpy
        --listen | --connect
        [:]
        [--wait-for-client]
        [--configure- ]...
        [--log-to ] [--log-to-stderr]
         | -m  | -c  | --pid 
        []...
    
    4 của bạn, đặt cổng để khớp với cổng được sử dụng trong lệnh
    {
      "name": "Python: Attach",
      "type": "python",
      "request": "attach",
      "connect": {
        "host": "localhost",
        "port": 5678
      }
    }
    
    8 và máy chủ thành
    python -m debugpy --listen 5678 ./myscript.py
    
    4. Bạn sử dụng
    python -m debugpy --listen 5678 ./myscript.py
    
    4 ở đây vì bạn đã thiết lập đường hầm SSH.

    {
      "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
        }
      ]
    }
    

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.

  1. Cả hai máy tính: Đảm bảo rằng mã nguồn giống hệt nhau có sẵn.

  2. Cả hai máy tính: Cài đặt Debugpy bằng cách sử dụng

    {
      "name": "Python: Attach",
      "type": "python",
      "request": "attach",
      "connect": {
        "host": "localhost",
        "port": 5678
      }
    }
    
    3 vào môi trường của bạn (trong khi sử dụng một dạng môi trường ảo là không cần thiết, đó là một thực tiễn tốt nhất được khuyến nghị).

  3. Máy tính từ xa: Có hai cách để chỉ định cách gắn vào quy trình từ xa.

    1. Trong mã nguồn, thêm các dòng sau, thay thế

      {
        "name": "Attach",
        "type": "python",
        "request": "attach",
        "connect": {
          "host": "remote-machine-name", // replace this with remote machine name
          "port": 5678
        }
      }
      
      6 bằng địa chỉ IP và số cổng của máy tính từ xa (Địa chỉ IP 1.2.3.4 được hiển thị ở đây chỉ để minh họa).

      "command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200",
      
      0

      Địa chỉ IP được sử dụng trong

      {
        "name": "Attach",
        "type": "python",
        "request": "attach",
        "connect": {
          "host": "remote-machine-name", // replace this with remote machine name
          "port": 5678
        }
      }
      
      7 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 nó tạm dừng cho đến khi trình gỡ lỗi gắn vào.

    2. Khởi chạy quy trình từ xa thông qua Debugpy, ví dụ:

      "command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200",
      
      1

      Điều này bắt đầu gói

      {
        "name": "Attach",
        "type": "python",
        "request": "attach",
        "connect": {
          "host": "remote-machine-name", // replace this with remote machine name
          "port": 5678
        }
      }
      
      8 bằng
      {
        "name": "Attach",
        "type": "python",
        "request": "attach",
        "connect": {
          "host": "remote-machine-name", // replace this with remote machine name
          "port": 5678
        }
      }
      
      9, với địa chỉ IP riêng của máy tính từ xa là
      import debugpy
      
      # 5678 is the default attach port in the VS Code debug configurations. Unless a host and port are specified, host defaults to 127.0.0.1
      debugpy.listen(5678)
      print("Waiting for debugger attach")
      debugpy.wait_for_client()
      debugpy.breakpoint()
      print('break on this line')
      
      0 và nghe trên cổng
      import debugpy
      
      # 5678 is the default attach port in the VS Code debug configurations. Unless a host and port are specified, host defaults to 127.0.0.1
      debugpy.listen(5678)
      print("Waiting for debugger attach")
      debugpy.wait_for_client()
      debugpy.breakpoint()
      print('break on this line')
      
      1 (bạn cũng có thể bắt đầu quy trình Python từ xa bằng cách chỉ định đường dẫn tệp thay vì sử dụng
      import debugpy
      
      # 5678 is the default attach port in the VS Code debug configurations. Unless a host and port are specified, host defaults to 127.0.0.1
      debugpy.listen(5678)
      print("Waiting for debugger attach")
      debugpy.wait_for_client()
      debugpy.breakpoint()
      print('break on this line')
      
      2, chẳng hạn như
      import debugpy
      
      # 5678 is the default attach port in the VS Code debug configurations. Unless a host and port are specified, host defaults to 127.0.0.1
      debugpy.listen(5678)
      print("Waiting for debugger attach")
      debugpy.wait_for_client()
      debugpy.breakpoint()
      print('break on this line')
      
      3).

  4. 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 máy tính từ xa. 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.Only if you modified the source code on the remote computer as outlined above, then in the source code, add a commented-out copy of the same code added on the remote computer. Adding these lines makes sure that the source code on both computers matches line by line.

    "command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200",
    
    2
  5. Máy tính cục bộ: Chuyển sang Chế độ xem chạy và gỡ lỗi (⇧⌘D (Windows, Linux Ctrl+Shift+D)) trong mã VS, chọn Python: Đính kèm cấu hìnhRun and Debug view (⇧⌘D (Windows, Linux Ctrl+Shift+D)) in VS Code, select the Python: Attach configuration

  6. Máy tính cục bộ: Đặt điểm dừng trong mã nơi bạn muốn bắt đầu gỡ lỗi.

  7. 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 nên dừng trên các điểm dừng được đặt cục bộ của bạn, cho phép bạn bước 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 vào bảng điều khiển gỡ lỗi cũng được chạy trên máy tính từ xa.Python: Attach configuration and the Start Debugging button. VS Code should stop on your locally set breakpoints, allowing you to step through the code, examine variables, and perform all other debugging actions. Expressions that you enter in the Debug Console are run on the remote computer as well.

    Đầu ra văn bản đến stdout, như từ các câu lệnh

    import debugpy
    
    # 5678 is the default attach port in the VS Code debug configurations. Unless a host and port are specified, host defaults to 127.0.0.1
    debugpy.listen(5678)
    print("Waiting for debugger attach")
    debugpy.wait_for_client()
    debugpy.breakpoint()
    print('break on this line')
    
    4, xuất hiện trên cả hai máy tính. Các đầu ra khác, chẳng hạn như các sơ đồ đồ họa từ một gói như matplotlib, tuy nhiên, chỉ xuất hiện trên máy tính từ xa.

  8. Trong quá trình gỡ lỗi từ xa, thanh công cụ gỡ lỗi xuất hiện như dưới đây:

    Hướng dẫn how do you pass command line arguments in python vscode? - làm thế nào để bạn chuyển các đối số dòng lệnh trong python vscode?

    Trên thanh công cụ này, nút ngắt kết nối (⇧f5 (Windows, Linux Shift+F5)) dừng trình gỡ lỗi và cho phép chương trình từ xa chạy hoàn thành. Nút khởi động lại (⇧⌘f5 (Windows, Linux Ctrl+Shift+F5)) khởi động lại trình gỡ lỗi trên máy tính cục bộ nhưng không khởi động lại chương trình từ xa. Chỉ sử dụng nút Khởi động lại khi bạn đã khởi động lại chương trình từ xa và cần gắn lại trình gỡ lỗi.⇧F5 (Windows, Linux Shift+F5)) 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.

Đặt tùy chọn cấu hình

Khi bạn lần đầu tiên tạo

python -m debugpy
    --listen | --connect
    [:]
    [--wait-for-client]
    [--configure- ]...
    [--log-to ] [--log-to-stderr]
     | -m  | -c  | --pid 
    []...
4, 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):

"command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200",
3

Cá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ư

python -m debugpy
    --listen | --connect
    [:]
    [--wait-for-client]
    [--configure- ]...
    [--log-to ] [--log-to-stderr]
     | -m  | -c  | --pid 
    []...
3, không bao gồm trong các cấu hình tiêu chuẩn.

Mẹo: Nó thường hữu ích trong một dự án để tạo cấu hình chạy tệp khởi động cụ thể. Ví dụ: nếu bạn muốn luôn khởi chạy

import debugpy

# 5678 is the default attach port in the VS Code debug configurations. Unless a host and port are specified, host defaults to 127.0.0.1
debugpy.listen(5678)
print("Waiting for debugger attach")
debugpy.wait_for_client()
debugpy.breakpoint()
print('break on this line')
7 với các đối số
import debugpy

# 5678 is the default attach port in the VS Code debug configurations. Unless a host and port are specified, host defaults to 127.0.0.1
debugpy.listen(5678)
print("Waiting for debugger attach")
debugpy.wait_for_client()
debugpy.breakpoint()
print('break on this line')
8 Khi bạn bắt đầu trình gỡ lỗi, hãy tạo một mục cấu hình như sau:
: It's often helpful in a project to create a configuration that runs a specific startup file. For example, if you want to always launch
import debugpy

# 5678 is the default attach port in the VS Code debug configurations. Unless a host and port are specified, host defaults to 127.0.0.1
debugpy.listen(5678)
print("Waiting for debugger attach")
debugpy.wait_for_client()
debugpy.breakpoint()
print('break on this line')
7 with the arguments
import debugpy

# 5678 is the default attach port in the VS Code debug configurations. Unless a host and port are specified, host defaults to 127.0.0.1
debugpy.listen(5678)
print("Waiting for debugger attach")
debugpy.wait_for_client()
debugpy.breakpoint()
print('break on this line')
8 when you start the debugger, create a configuration entry as follows:

"command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200",
4

import debugpy # 5678 is the default attach port in the VS Code debug configurations. Unless a host and port are specified, host defaults to 127.0.0.1 debugpy.listen(5678) print("Waiting for debugger attach") debugpy.wait_for_client() debugpy.breakpoint() print('break on this line') 9

Cung 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.

AllowTcpForwarding yes 0

Xác định loại trình gỡ lỗi để sử dụng; Để lại bộ này thành

python -m debugpy --listen 5678 ./myscript.py
0 cho mã Python.

AllowTcpForwarding yes 2

Chỉ định chế độ để bắt đầu gỡ lỗi:

  • AllowTcpForwarding yes
    
    3: Bắt đầu trình gỡ lỗi trên tệp được chỉ định trong
    AllowTcpForwarding yes
    
    4
  • AllowTcpForwarding yes
    
    5: Gắn trình gỡ lỗi vào một quá trình đã chạy. Xem ví dụ gỡ lỗi từ xa cho một ví dụ.

AllowTcpForwarding yes 4

Cung 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ị

AllowTcpForwarding yes
7, 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ụ:

"command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200",
5

Bạ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à

AllowTcpForwarding yes
8 thì bạn có thể sử dụng ví dụ sau:

"command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200",
6

AllowTcpForwarding yes 9

Cung 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ố

import debugpy

# 5678 is the default attach port in the VS Code debug configurations. Unless a host and port are specified, host defaults to 127.0.0.1
debugpy.listen(5678)
print("Waiting for debugger attach")
debugpy.wait_for_client()
debugpy.breakpoint()
print('break on this line')
2 khi chạy tại dòng lệnh. Để biết thêm thông tin, hãy xem Python.org

python -m debugpy --listen 5678 ./myscript.py 0

Con đườ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ị

{
  "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
    }
  ]
}
2. Để 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
python -m debugpy --listen 5678 ./myscript.py
0 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

{
  "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
    }
  ]
}
4.

{ "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 } ] } 4

Chỉ đị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

{
  "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
    }
  ]
}
6.

python -m debugpy --listen | --connect [:] [--wait-for-client] [--configure- ]... [--log-to ] [--log-to-stderr] | -m | -c | --pid []... 3

Chỉ đị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ụ:

"command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200",
7

{ "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 } ] } 8

Khi được đặt thành

{
  "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
    }
  ]
}
9, 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
"command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200",
00, trình gỡ lỗi sẽ chạy chương trình đến điểm dừng đầu tiên.

"command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200", 01

Chỉ định cách đầu ra chương trình được hiển thị miễn là mặc định cho

"command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200",
02 không được sửa đổi.

Giá trịNơi đầu ra được hiển thị
"command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200",
03
VS Code Debug Console. Nếu
"command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200",
02 được đặt thành sai, không có đầu ra nào được hiển thị.
If
"command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200",
02 is set to False, no output is displayed.
"command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200",
05 (mặc định)
VS mã Terminal tích hợp. Nếu
"command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200",
02 được đặt thành TRUE, đầu ra cũng được hiển thị trong bảng điều khiển gỡ lỗi.
"command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200",
07
Cửa sổ giao diện điều khiển riêng biệt. Nếu
"command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200",
02 được đặt thành TRUE, đầu ra cũng được hiển thị trong bảng điều khiển gỡ lỗi.
. If
"command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200",
02 is set to True, output is also displayed in the debug console.

"command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200", 09

Có nhiều hơn một cách để định cấu hình nút chạy, sử dụng tùy chọn

"command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200",
09. Đặt tùy chọn thành
"command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200",
11, 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
"command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200",
12, 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
"command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200",
09 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
"command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200",
09 option. Setting the option to
"command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200",
11, defines that the configuration should be used when debugging tests in VS Code. However, setting the option to
"command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200",
12, 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
"command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200",
09 option can't be used to start the debugger through F5 or Run > Start Debugging.

"command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200", 14

Cho 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

"command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200",
15 như được hiển thị trong mã sau.

"command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200",
8

*Lưu ý: Khi trình gỡ lỗi thực hiện tải lại, mã chạy trên nhập có thể được thực thi lại. Để tránh tình huống này, hãy cố gắng chỉ sử dụng nhập khẩu, hằng số và định nghĩa trong mô -đun của bạn, đặt tất cả mã vào các chức năng. Ngoài ra, bạn cũng có thể sử dụng kiểm tra

"command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200",
16.Note: When the debugger performs a reload, code that runs on import might be executed again. To avoid this situation, try to only use imports, constants, and definitions in your module, placing all code into functions. Alternatively, you can also use
"command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200",
16 checks.

"command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200", 17

Chỉ định xem có cho phép gỡ lỗi phụ hay không. Mặc định là

"command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200",
00, được đặt thành
{
  "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
    }
  ]
}
9 để bật. Để biết thêm thông tin, hãy xem gỡ lỗi đa mục tiêu.

"command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200", 20

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ị bỏ qua, mặc định là

"command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200",
21 (thư mục mở trong mã VS).

Ví dụ, giả sử

"command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200",
21 chứa thư mục
"command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200",
23 chứa
"command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200",
24 và thư mục
"command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200",
25 chứa
"command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200",
26. Nếu bạn bắt đầu trình gỡ lỗi trên
"command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200",
27, 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
"command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200",
20:

CWDĐường dẫn tương đối đến tệp dữ liệu
Bỏ qua hoặc
"command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200",
21
"command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200",
30
"command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200",
31
"command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200",
32
"command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200",
33
"command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200",
26

"command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200", 02

Khi được đặt thành

{
  "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
    }
  ]
}
9 (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
"command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200",
00 (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

"command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200",
38 hoặc
"command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200",
39 vì không cần phải sao chép đầu ra trong bảng điều khiển gỡ lỗi.

"command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200", 40

Khi bị bỏ qua hoặc đặt thành

{
  "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
    }
  ]
}
9 (mặc định), chỉ giới hạn gỡ lỗi thành mã viết người dùng. Đặt thành
"command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200",
00 để cho phép gỡ lỗi các chức năng thư viện tiêu chuẩn.

"command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200", 43

Khi được đặt thành

{
  "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
    }
  ]
}
9, kích hoạt các tính năng gỡ lỗi cụ thể cho khung web Django.

"command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200", 45

Khi được đặt thành

{
  "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
    }
  ]
}
9 và được sử dụng với
"command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200",
39, 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.

"command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200", 48

Khi được đặt thành

{
  "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
    }
  ]
}
9, đảm bảo rằng một ứng dụng kim tự tháp được khởi chạy với lệnh
"command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200",
50 cần thiết.

"command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200", 51

Đặ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.

"command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200", 52

Đườ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.

"command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200", 53

Nếu được đặt thành

{
  "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
    }
  ]
}
9, hãy cho phép gỡ lỗi mã được dán của Gevent Monkey.

"command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200", 55

Khi được đặt thành

{
  "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
    }
  ]
}
9, 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 logpi

Tiệ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

{
  "name": "Python: Attach",
  "type": "python",
  "request": "attach",
  "connect": {
    "host": "localhost",
    "port": 5678
  }
}
6 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ừng

Tiệ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

"command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200",
59 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ấu hìnhSự mô tả
GắnXem gỡ lỗi từ xa trong phần trước.
DjangoChỉ định
"command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200",
60,
"command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200",
61. Cũng thêm
"command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200",
62 để cho phép gỡ lỗi các mẫu HTML Django.
Bình giữ nhiệtXem Debuging Debuging bên dưới.
GeventThêm
"command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200",
63 vào cấu hình thiết bị đầu cuối tích hợp tiêu chuẩn.
Kim tự thápXóa
AllowTcpForwarding yes
4, thêm
"command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200",
65, thêm
"command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200",
66 để cho phép gỡ lỗi mẫu và thêm
"command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200",
67 để đảm bảo rằng chương trình được khởi chạy với lệnh
"command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200",
50 cần thiết.
QuétChỉ định
"command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200",
69 và thêm
"command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200",
70.
WatsonChỉ định
"command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200",
71 và
"command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200",
72.

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

"command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200",
39 và
"command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200",
74.

Bình gỡ lỗi

"command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200",
9

Như bạn có thể thấy, cấu hình này chỉ định

"command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200",
75 và
"command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200",
76. Thuộc tính
"command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200",
77 được sử dụng thay vì
AllowTcpForwarding yes
4. .

Cài đặt

"command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200",
66 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:

python -m debugpy
    --listen | --connect
    [:]
    [--wait-for-client]
    [--configure- ]...
    [--log-to ] [--log-to-stderr]
     | -m  | -c  | --pid 
    []...
0

Xử 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:

  • Đường dẫn đến thực thi Python là 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 lệnh Python: chọn phiên dịch và nhìn vào giá trị hiện tại:Python: Select Interpreter command and looking at the current value:

    Hướng dẫn how do you pass command line arguments in python vscode? - làm thế nào để bạn chuyển các đối số dòng lệnh trong python vscode?

  • Có các biểu thức không hợp lệ trong cửa sổ đồng hồ: Xóa tất cả các biểu thức từ cửa sổ đồng hồ 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

    "command": "python ${file} --model_type LeNet5 --prior_file conf1.json --epochs 200",
    
    82 chứ không phải API luồng Python), hiện tại cần phải bao gồm mã nguồn sau ở đầu trong bất kỳ tệp nào bạn muốn gỡ lỗi :

    python -m debugpy
        --listen | --connect
        [:]
        [--wait-for-client]
        [--configure- ]...
        [--log-to ] [--log-to-stderr]
         | -m  | -c  | --pid 
        []...
    
    1
  • Nếu bạn đang làm việc với một hệ thống Linux, bạn có thể nhận được thông báo lỗi "hết thời gian" khi cố gắng áp dụng trình gỡ lỗi cho bất kỳ quy trình 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:Linux system, you may receive a "timed out" error message when trying to apply a debugger to any running process. To prevent this, you can temporarily run the following command:

    python -m debugpy
        --listen | --connect
        [:]
        [--wait-for-client]
        [--configure- ]...
        [--log-to ] [--log-to-stderr]
         | -m  | -c  | --pid 
        []...
    
    2

Bước tiếp theo

  • Môi trường Python - Kiểm soát trình thông dịch Python nào được sử dụng để chỉnh sửa và gỡ lỗi.
  • Kiểm tra - Định cấu hình môi trường thử nghiệm và khám phá, chạy và gỡ lỗi các bài kiểm tra.
  • Tài liệu tham khảo Cài đặt - Khám phá toàn bộ các cài đặt liên quan đến Python trong mã VS.
  • General Debugging - Tìm hiểu về các tính năng gỡ lỗi của mã VS.

7/13/2022

Làm thế nào để bạn vượt qua các đối số dòng lệnh trong mã Visual Studio?

Để đặt các đối số dòng lệnh trong Visual Studio, nhấp chuột phải vào tên dự án, sau đó đi đến Thuộc tính. Trong khung thuộc tính, đi đến "gỡ lỗi" và trong khung này là một dòng cho "các đối số dòng lệnh". Thêm các giá trị bạn muốn sử dụng trên dòng này. Chúng sẽ được chuyển đến chương trình thông qua mảng Argv.

Làm thế nào để bạn chuyển một đối số dòng lệnh cho chính trong Python?

Dòng lệnh args mã python chính () ở trên bắt đầu bằng một dòng tiêu chuẩn CS106A args = sys.argv [1:] thiết lập một danh sách có tên Args để chứa các chuỗi ARG dòng lệnh. Dòng này hoạt động và bạn luôn có thể sử dụng nó.args = sys. argv[1:] which sets up a list named args to contain the command line arg strings. This line works and you can always use it.

Làm cách nào để chuyển các đối số dòng lệnh cho Python từ VS ở chế độ gỡ lỗi?

Truy cập thuộc tính dự án của bạn, bằng cách nhấp chuột phải vào dự án và chọn "thuộc tính" hoặc bằng cách chọn các thuộc tính từ menu dự án.Nhấp vào gỡ lỗi, sau đó nhập các đối số của bạn vào trường "Đối số tập lệnh".Tiết kiệm.

Làm thế nào để bạn chuyển các đối số cho một kịch bản Python?

Trong Python, các đối số được chuyển đến một tập lệnh từ dòng lệnh bằng gói SYS.Thành viên Argv của SYS (SYS. ARGV) sẽ lưu trữ tất cả các thông tin trong mục nhập dòng lệnh và có thể được truy cập bên trong tập lệnh Python.Mô -đun GetOpt của Python cũng có thể được sử dụng để phân tích các đối số được đặt tên.using the sys package. The argv member of sys ( sys. argv ) will store all the information in the command line entry and can be accessed inside the Python script. Python's getopt module can also be used to parse named arguments.