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

{
  "name": "Python: Attach",
  "type": "python",
  "request": "attach",
  "connect": {
    "host": "localhost",
    "port": 5678
  }
}
1 được lưu trữ trong thư mục
{
  "name": "Python: Attach",
  "type": "python",
  "request": "attach",
  "connect": {
    "host": "localhost",
    "port": 5678
  }
}
2 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 debug python vscode - gỡ lỗi 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 debug python vscode - gỡ lỗi python vscode

Để tạo tệp

{
  "name": "Python: Attach",
  "type": "python",
  "request": "attach",
  "connect": {
    "host": "localhost",
    "port": 5678
  }
}
1 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 debug python vscode - gỡ lỗi 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

    {
      "name": "Python: Attach",
      "type": "python",
      "request": "attach",
      "connect": {
        "host": "localhost",
        "port": 5678
      }
    }
    
    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 đâ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 debug python vscode - gỡ lỗi 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

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

Hướng dẫn debug python vscode - gỡ lỗi 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 debug python vscode - gỡ lỗi 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 debug python vscode - gỡ lỗi 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

{
  "name": "Python: Attach",
  "type": "python",
  "request": "attach",
  "connect": {
    "host": "localhost",
    "port": 5678
  }
}
7 trong
{
  "name": "Python: Attach",
  "type": "python",
  "request": "attach",
  "connect": {
    "host": "localhost",
    "port": 5678
  }
}
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ả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 debug python vscode - gỡ lỗi 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 debug python vscode - gỡ lỗi 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 debug python vscode - gỡ lỗi 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 debug python vscode - gỡ lỗi 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ờ

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

python -m debugpy --listen 0.0.0.0:5678 ./myscript.py
0 hoặc
python -m debugpy --listen 0.0.0.0:5678 ./myscript.py
1, 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 0.0.0.0:5678 ./myscript.py
0 or
python -m debugpy --listen 0.0.0.0:5678 ./myscript.py
1 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 0.0.0.0:5678 ./myscript.py
2
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 0.0.0.0:5678 ./myscript.py
3.
. 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 0.0.0.0:5678 ./myscript.py
3.
--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 0.0.0.0:5678 ./myscript.py
4
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 0.0.0.0:5678 ./myscript.py
4
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 0.0.0.0:5678 ./myscript.py
5
. 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
python -m debugpy --listen 0.0.0.0:5678 ./myscript.py
7.

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

python -m debugpy --listen 0.0.0.0:5678 ./myscript.py
8 can be used to pass command-line arguments along to the app being launched.

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

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 python -m debugpy --listen 0.0.0.0:5678 ./myscript.py 7.

Lưu ý:

python -m debugpy --listen 0.0.0.0:5678 ./myscript.py
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.

  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

    {
      "name": "Python: Attach",
      "type": "python",
      "request": "attach",
      "connect": {
        "host": "localhost",
        "port": 5678
      }
    }
    
    1 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": "Attach",
      "type": "python",
      "request": "attach",
      "connect": {
        "host": "remote-machine-name", // replace this with remote machine name
        "port": 5678
      }
    }
    
    0.

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.

Trình gỡ lỗi nên 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
  }
}
3, từ đó 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 cách sử dụng giao diện người dùng thay vì sử dụng
{
  "name": "Attach",
  "type": "python",
  "request": "attach",
  "connect": {
    "host": "remote-machine-name", // replace this with remote machine name
    "port": 5678
  }
}
3.
: On Windows computers, you may need to install Windows 10 OpenSSH to have the
{
  "name": "Attach",
  "type": "python",
  "request": "attach",
  "connect": {
    "host": "remote-machine-name", // replace this with remote machine name
    "port": 5678
  }
}
5 command.

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.

  1. 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": "Attach",
      "type": "python",
      "request": "attach",
      "connect": {
        "host": "remote-machine-name", // replace this with remote machine name
        "port": 5678
      }
    }
    
    5.

    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

    {
      "name": "Attach",
      "type": "python",
      "request": "attach",
      "connect": {
        "host": "remote-machine-name", // replace this with remote machine name
        "port": 5678
      }
    }
    
    9, hãy khởi động lại máy chủ SSH. Trên Linux/MacOS, 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')
    
    0; Trên Windows, 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')
    
    1, chọn OpenSSH hoặc
    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 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

    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, sử dụng một cổng đã chọn cho
    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 và tên người dùng thích hợp và địa chỉ IP của máy tính từ xa trong
    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')
    
    5. Ví dụ: để sử dụng cổng 5678 trên địa chỉ IP 1.2.3.4, lệnh sẽ 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')
    
    6. Bạn có thể chỉ định đường dẫn đến tệp nhận dạng, sử dụng cờ
    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.

  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

    {
      "name": "Python: Attach",
      "type": "python",
      "request": "attach",
      "connect": {
        "host": "localhost",
        "port": 5678
      }
    }
    
    1 của bạn, đặt cổng để khớp với cổng được sử dụng trong lệnh
    {
      "name": "Attach",
      "type": "python",
      "request": "attach",
      "connect": {
        "host": "remote-machine-name", // replace this with remote machine name
        "port": 5678
      }
    }
    
    5 và máy chủ thành
    python -m debugpy --listen 0.0.0.0:5678 ./myscript.py
    
    1. Bạn sử dụng
    python -m debugpy --listen 0.0.0.0:5678 ./myscript.py
    
    1 ở đâ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": "Attach",
      "type": "python",
      "request": "attach",
      "connect": {
        "host": "remote-machine-name", // replace this with remote machine name
        "port": 5678
      }
    }
    
    0 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ế

      AllowTcpForwarding yes
      
      3 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).

      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()
      

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

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

      python3 -m debugpy --listen 1.2.3.4:5678 --wait-for-client -m myproject
      

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

      AllowTcpForwarding yes
      
      5 bằng
      AllowTcpForwarding yes
      
      6, với địa chỉ IP riêng của máy tính từ xa là
      AllowTcpForwarding yes
      
      7 và nghe trên cổng
      AllowTcpForwarding yes
      
      8 (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
      AllowTcpForwarding yes
      
      9, chẳng hạn 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
          }
        ]
      }
      
      0).

  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.

    python -m debugpy --listen 5678 ./myscript.py
    
    0
  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

    {
      "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
        }
      ]
    }
    
    1, 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 debug python vscode - gỡ lỗi 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

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

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

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ư

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

{
  "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 với các đối số
{
  "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
    }
  ]
}
5 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
{
  "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 with the arguments
{
  "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
    }
  ]
}
5 when you start the debugger, create a configuration entry as follows:

python -m debugpy --listen 5678 ./myscript.py
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 } ] } 6

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.

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

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

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

Chỉ đị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()
    
    0: Bắt đầu trình gỡ lỗi trên tệp được chỉ định trong
    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()
    
    1
  • 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()
    
    2: 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ụ.

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() 1

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ị

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()
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ụ:

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

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à

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()
5 thì bạn có thể sử dụng ví dụ sau:

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

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() 6

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ố

AllowTcpForwarding yes
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 } } 7

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ị

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

python3 -m debugpy --listen 1.2.3.4:5678 --wait-for-client -m myproject
1.

python3 -m debugpy --listen 1.2.3.4:5678 --wait-for-client -m myproject 1

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

python3 -m debugpy --listen 1.2.3.4:5678 --wait-for-client -m myproject
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 } ] } 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ụ:

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

python3 -m debugpy --listen 1.2.3.4:5678 --wait-for-client -m myproject 5

Khi được đặt thành

python3 -m debugpy --listen 1.2.3.4:5678 --wait-for-client -m myproject
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
python3 -m debugpy --listen 1.2.3.4:5678 --wait-for-client -m myproject
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 8

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

python3 -m debugpy --listen 1.2.3.4:5678 --wait-for-client -m myproject
9 không được sửa đổi.

Giá trịNơi đầu ra được hiển thị
python -m debugpy --listen 5678 ./myscript.py
00
VS Code Debug Console. Nếu
python3 -m debugpy --listen 1.2.3.4:5678 --wait-for-client -m myproject
9 được đặt thành sai, không có đầu ra nào được hiển thị.
If
python3 -m debugpy --listen 1.2.3.4:5678 --wait-for-client -m myproject
9 is set to False, no output is displayed.
python -m debugpy --listen 5678 ./myscript.py
02 (mặc định)
VS mã Terminal tích hợp. Nếu
python3 -m debugpy --listen 1.2.3.4:5678 --wait-for-client -m myproject
9 được đặt thành TRUE, đầu ra cũng được hiển thị trong bảng điều khiển gỡ lỗi.
python -m debugpy --listen 5678 ./myscript.py
04
Cửa sổ giao diện điều khiển riêng biệt. Nếu
python3 -m debugpy --listen 1.2.3.4:5678 --wait-for-client -m myproject
9 được đặt thành TRUE, đầu ra cũng được hiển thị trong bảng điều khiển gỡ lỗi.
. If
python3 -m debugpy --listen 1.2.3.4:5678 --wait-for-client -m myproject
9 is set to True, output is also displayed in the debug console.

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

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

python -m debugpy --listen 5678 ./myscript.py
06. Đặt tùy chọn thành
python -m debugpy --listen 5678 ./myscript.py
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
python -m debugpy --listen 5678 ./myscript.py
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
python -m debugpy --listen 5678 ./myscript.py
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
python -m debugpy --listen 5678 ./myscript.py
06 option. Setting the option to
python -m debugpy --listen 5678 ./myscript.py
08, defines that the configuration should be used when debugging tests in VS Code. However, setting the option to
python -m debugpy --listen 5678 ./myscript.py
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
python -m debugpy --listen 5678 ./myscript.py
06 option can't be used to start the debugger through F5 or Run > Start Debugging.

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

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

python -m debugpy --listen 5678 ./myscript.py
12 như được hiển thị trong mã sau.

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

*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

python -m debugpy --listen 5678 ./myscript.py
13.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
python -m debugpy --listen 5678 ./myscript.py
13 checks.

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

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

python3 -m debugpy --listen 1.2.3.4:5678 --wait-for-client -m myproject
7, được đặt thành
python3 -m debugpy --listen 1.2.3.4:5678 --wait-for-client -m myproject
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 17

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à

python -m debugpy --listen 5678 ./myscript.py
18 (thư mục mở trong mã VS).

Ví dụ, giả sử

python -m debugpy --listen 5678 ./myscript.py
18 chứa thư mục
python -m debugpy --listen 5678 ./myscript.py
20 chứa
python -m debugpy --listen 5678 ./myscript.py
21 và thư mục
python -m debugpy --listen 5678 ./myscript.py
22 chứa
python -m debugpy --listen 5678 ./myscript.py
23. Nếu bạn bắt đầu trình gỡ lỗi trên
python -m debugpy --listen 5678 ./myscript.py
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
python -m debugpy --listen 5678 ./myscript.py
17:

CWDĐường dẫn tương đối đến tệp dữ liệu
Bỏ qua hoặc
python -m debugpy --listen 5678 ./myscript.py
18
python -m debugpy --listen 5678 ./myscript.py
27
python -m debugpy --listen 5678 ./myscript.py
28
python -m debugpy --listen 5678 ./myscript.py
29
python -m debugpy --listen 5678 ./myscript.py
30
python -m debugpy --listen 5678 ./myscript.py
23

python3 -m debugpy --listen 1.2.3.4:5678 --wait-for-client -m myproject 9

Khi được đặt thành

python3 -m debugpy --listen 1.2.3.4:5678 --wait-for-client -m myproject
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
python3 -m debugpy --listen 1.2.3.4:5678 --wait-for-client -m myproject
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

python -m debugpy --listen 5678 ./myscript.py
35 hoặc
python -m debugpy --listen 5678 ./myscript.py
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 37

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

python3 -m debugpy --listen 1.2.3.4:5678 --wait-for-client -m myproject
6 (mặc định), chỉ giới hạn gỡ lỗi thành mã viết người dùng. Đặt thành
python3 -m debugpy --listen 1.2.3.4:5678 --wait-for-client -m myproject
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 40

Khi được đặt thành

python3 -m debugpy --listen 1.2.3.4:5678 --wait-for-client -m myproject
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 42

Khi được đặt thành

python3 -m debugpy --listen 1.2.3.4:5678 --wait-for-client -m myproject
6 và được sử dụng với
python -m debugpy --listen 5678 ./myscript.py
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 45

Khi được đặt thành

python3 -m debugpy --listen 1.2.3.4:5678 --wait-for-client -m myproject
6, đảm bảo rằng một ứng dụng kim tự tháp được khởi chạy với lệnh
python -m debugpy --listen 5678 ./myscript.py
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 50

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

python3 -m debugpy --listen 1.2.3.4:5678 --wait-for-client -m myproject
6, hãy cho phép gỡ lỗi mã được đặt của Gevent Monkey.

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

Khi được đặt thành

python3 -m debugpy --listen 1.2.3.4:5678 --wait-for-client -m myproject
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 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": "Attach",
  "type": "python",
  "request": "attach",
  "connect": {
    "host": "remote-machine-name", // replace this with remote machine name
    "port": 5678
  }
}
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ừ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

python -m debugpy --listen 5678 ./myscript.py
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ấu hìnhSự mô tả
GắnXem gỡ lỗi từ xa trong phần trước.
DjangoChỉ định
python -m debugpy --listen 5678 ./myscript.py
57,
python -m debugpy --listen 5678 ./myscript.py
58. Cũng thêm
python -m debugpy --listen 5678 ./myscript.py
59 để 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
python -m debugpy --listen 5678 ./myscript.py
60 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
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()
1, thêm
python -m debugpy --listen 5678 ./myscript.py
62, thêm
python -m debugpy --listen 5678 ./myscript.py
63 để cho phép gỡ lỗi mẫu và thêm
python -m debugpy --listen 5678 ./myscript.py
64 để đảm bảo rằng chương trình được khởi chạy với lệnh
python -m debugpy --listen 5678 ./myscript.py
47 cần thiết.
QuétChỉ định
python -m debugpy --listen 5678 ./myscript.py
66 và thêm
python -m debugpy --listen 5678 ./myscript.py
67.
WatsonChỉ định
python -m debugpy --listen 5678 ./myscript.py
68 và
python -m debugpy --listen 5678 ./myscript.py
69.

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

python -m debugpy --listen 5678 ./myscript.py
36 và
python -m debugpy --listen 5678 ./myscript.py
71.

Bình gỡ lỗi

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

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

python -m debugpy --listen 5678 ./myscript.py
72 và
python -m debugpy --listen 5678 ./myscript.py
73. Thuộc tính
python -m debugpy --listen 5678 ./myscript.py
74 được sử dụng thay vì
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()
1. .

Cài đặt

python -m debugpy --listen 5678 ./myscript.py
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:

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

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 debug python vscode - gỡ lỗi 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

    python -m debugpy --listen 5678 ./myscript.py
    
    79 chứ không phải API luồng Python), hiện tại cần phải đưa mã nguồn sau ở đầu trong bất kỳ tệp nào bạn muốn gỡ lỗi :

    python -m debugpy --listen 5678 ./myscript.py
    
    9
  • 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:

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

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