Nhận yêu cầu ip python

Tiện ích mở rộng Python hỗ trợ gỡ lỗi một số loại ứng dụng Python. Để biết hướng dẫn ngắn về gỡ lỗi cơ bản, hãy xem. Cũng xem hướng dẫn Flask. Cả hai hướng dẫn đều thể hiện các kỹ năng cốt lõi như thiết lập điểm dừng và duyệt qua mã

Đối với các tính năng gỡ lỗi chung chẳng hạn như kiểm tra các biến, đặt điểm dừng và các hoạt động khác không phụ thuộc vào ngôn ngữ, hãy xem lại phần gỡ lỗi Mã VS

Bài viết này chủ yếu giải quyết các cấu hình gỡ lỗi dành riêng cho Python, bao gồm các bước cần thiết cho các loại ứng dụng cụ thể và gỡ lỗi từ xa

Khởi tạo cấu hình

Cấu hình điều khiển hành vi của Mã VS trong phiên gỡ lỗi. Các cấu hình được xác định trong tệp

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

Ghi chú. Để thay đổi cấu hình gỡ lỗi, mã của bạn phải được lưu trữ trong một thư mục

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

Nếu bạn chưa xác định bất kỳ cấu hình nào, bạn sẽ thấy một nút để Chạy và Gỡ lỗi và một liên kết để tạo cấu hình [khởi chạy. json] tập tin

Để 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 làm theo các bước sau

  1. Chọn tạo khởi chạy. json [được phác thảo trong hình trên] hoặc sử dụng lệnh menu Chạy > Mở cấu hình

  2. Một menu cấu hình sẽ mở ra từ Bảng lệnh cho phép bạn chọn loại cấu hình gỡ lỗi mà bạn muốn cho tệp đã mở. Hiện tại, trong menu Chọn cấu hình gỡ lỗi xuất hiện, hãy chọn Tệp Python.

    Ghi chú. Bắt đầu phiên gỡ lỗi thông qua Bảng gỡ lỗi, F5 hoặc Chạy > Bắt đầu gỡ lỗi khi không có cấu hình cũng sẽ hiển thị menu cấu hình gỡ lỗi, nhưng sẽ không tạo . tập tin json.

  3. Sau đó, tiện ích mở rộng Python 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 đó, trong trường hợp này là Tệp Python. Bạn có thể sửa đổi cấu hình [ví dụ: để thêm đối số] và cũng có thể thêm cấu hình tùy chỉnh

Chi tiết về các thuộc tính cấu hình được đề cập sau trong bài viết này dưới. Các cấu hình khác cũng được mô tả trong bài viết này dướ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 để đưa vào

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

Chọn Đính kèm bằng ID quy trình sẽ mang lại kết quả như sau.

Xem để biết chi tiết về tất cả các cấu hình này

Trong khi gỡ lỗi, Thanh trạng thái hiển thị cấu hình hiện tại và trình thông dịch gỡ lỗi hiện tại. Chọn cấu hình sẽ hiển thị danh sách từ đó bạn có thể chọn cấu hình khác

Theo mặc định, trình gỡ lỗi sử dụng cùng một trình thông dịch được chọn cho không gian làm việc của bạn, giống như các tính năng khác của tiện ích mở rộng Python cho Mã VS. Để sử dụng một trình thông dịch khác để gỡ lỗi cụ thể, hãy đặt giá trị cho

{
  "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. Ngoài ra, hãy chọn trình thông dịch có tên trên Thanh trạng thái để chọn một trình thông dịch khác

Gỡ lỗi cơ bản

Nếu bạn chỉ quan tâm đến việc gỡ lỗi tập lệnh Python, cách đơn giản nhất là chọn mũi tên xuống bên cạnh nút chạy trên trình chỉnh sửa và chọn Gỡ lỗi tệp Python trong Terminal

Nếu bạn đang tìm cách gỡ lỗi ứng dụng web bằng Flask, Django hoặc FastAPI, tiện ích mở rộng Python cung cấp cấu hình gỡ lỗi được tạo động dựa trên cấu trúc dự án của bạn trong tùy chọn Hiển thị tất cả cấu hình gỡ lỗi tự động, thông qua chế độ xem Chạy và Gỡ lỗi

Nhưng nếu bạn đang tìm cách gỡ lỗi các loại ứng dụng khác, bạn có thể khởi động trình gỡ lỗi thông qua chế độ xem Chạy bằng cách nhấp vào nút Chạy và Gỡ lỗi

Khi chưa đặt cấu hình nào, bạn sẽ được cung cấp một danh sách các tùy chọn gỡ lỗi. Tại đây, bạn có thể chọn tùy chọn thích hợp để nhanh chóng gỡ lỗi mã của mình

Hai tùy chọn phổ biến là sử dụng cấu hình Tệp Python để chạy tệp Python hiện đang mở hoặc sử dụng cấu hình Đính kèm sử dụng ID tiến trình để đính kèm trình gỡ lỗi vào một quy trình đang chạy

Để biết thông tin về cách tạo và sử dụng cấu hình gỡ lỗi, hãy xem phần và. Khi một cấu hình được thêm vào, nó có thể được chọn từ danh sách thả xuống và bắt đầu sử dụng nút Bắt đầu gỡ lỗi

Gỡ lỗi dòng lệnh

Trình gỡ lỗi cũng có thể được chạy từ dòng lệnh. Cú pháp dòng lệnh của trình gỡ lỗi như sau

________số 8_______

Ví dụ: từ dòng lệnh, bạn có thể khởi động trình gỡ lỗi bằng một cổng đã chỉ định [5678] và tập lệnh bằng cú pháp sau. Ví dụ này giả định rằng tập lệnh đang chạy lâu và bỏ qua cờ

{
  "name": "Python: Attach",
  "type": "python",
  "request": "attach",
  "connect": {
    "host": "localhost",
    "port": 5678
  }
}
9, nghĩa là tập lệnh sẽ không đợi máy khách đí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ừ tiện ích mở rộng VS Code Python

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

Ghi chú. Chỉ định máy chủ là tùy chọn để nghe, theo mặc định 127. 0. 0. 1 được sử dụng

Nếu bạn muốn gỡ lỗi mã từ xa hoặc mã chạy trong bộ chứa docker, trên máy hoặc bộ chứa từ xa, bạn 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

Sau đó, tệp cấu hình được liên kết sẽ trông như sau

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

Ghi chú. Xin lưu ý rằng khi bạn chỉ định một giá trị máy chủ khác vớ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 đang mở một cổng để cho phép truy cập từ bất kỳ máy nào, điều này có rủi ro về bảo mật. Bạn nên đảm bảo rằng bạn đang thực hiện các biện pháp phòng ngừa bảo mật thích hợp, chẳng hạn như sử dụng đường hầm SSH, khi thực hiện gỡ lỗi từ xa

FlagOptionsDescription--listen or --connect
python -m debugpy --listen 0.0.0.0:5678 ./myscript.py
2Required. 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-clientnoneOptional. Specifies that the code should not run until there's a connection from the debug server. This setting allows you to debug from the first line of your code.--log-to
python -m debugpy --listen 0.0.0.0:5678 ./myscript.py
4Optional. Specifies a path to an existing directory for saving logs.--log-to-stderrnoneOptional. Enables debugpy to write logs directly to stderr.--pid
python -m debugpy --listen 0.0.0.0:5678 ./myscript.py
5Optional. Specifies a process that is already running to inject the debug server into.--configure-
python -m debugpy --listen 0.0.0.0:5678 ./myscript.py
6Optional. 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.

Ghi chú.

python -m debugpy --listen 0.0.0.0:5678 ./myscript.py
8 có thể được sử dụng để truyền các đối số dòng lệnh cho ứng dụng đang được khởi chạy

Gỡ lỗi bằng cách đính kèm qua kết nối mạng

Gỡ lỗi tập lệnh cục bộ

Có thể có những trường hợp bạn cần gỡ lỗi tập lệnh Python được gọi cục bộ bởi một quy trình khác. Ví dụ: bạn có thể đang gỡ lỗi một máy chủ web chạy các tập lệnh Python khác nhau cho các công việc xử lý cụ thể. Trong những trường hợp như vậy, bạn cần đính kèm trình gỡ lỗi Mã VS vào tập lệnh sau khi nó được khởi chạy

  1. Chạy Mã VS, mở thư mục hoặc không gian làm việc chứa tập lệnh và tạo một

    {
      "name": "Python: Attach",
      "type": "python",
      "request": "attach",
      "connect": {
        "host": "localhost",
        "port": 5678
      }
    }
    
    1 cho không gian làm việc đó nếu chưa có

  2. Trong mã tập lệnh, thêm phần sau và lưu tệp

    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. Mở một thiết bị đầu cuối bằng Terminal. Tạo Terminal mới, kích hoạt môi trường đã chọn của tập lệnh

  4. Trong thiết bị đầu cuối, hãy 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

  5. Trong terminal, khởi động Python với script, 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 "Đang chờ đính kèm trình sửa lỗi" được bao gồm trong mã và tập lệnh tạm dừng ở lệnh gọi
    {
      "name": "Attach",
      "type": "python",
      "request": "attach",
      "connect": {
        "host": "remote-machine-name", // replace this with remote machine name
        "port": 5678
      }
    }
    
    2

  6. Chuyển sang chế độ xem Chạy và Gỡ lỗi [ ⇧⌘D [Windows, Linux Ctrl+Shift . ]], select the appropriate configuration from the debugger dropdown list, and start the debugger.

  7. Trình gỡ lỗi sẽ dừng ở lệnh gọi

    {
      "name": "Attach",
      "type": "python",
      "request": "attach",
      "connect": {
        "host": "remote-machine-name", // replace this with remote machine name
        "port": 5678
      }
    }
    
    3, từ thời điểm đó bạn có thể sử dụng trình gỡ lỗi bình thường. Bạn cũng có tùy chọn đặt các điểm dừng khác trong mã tập lệnh bằng giao diện người dùng thay vì sử dụng
    {
      "name": "Attach",
      "type": "python",
      "request": "attach",
      "connect": {
        "host": "remote-machine-name", // replace this with remote machine name
        "port": 5678
      }
    }
    
    3

Gỡ lỗi tập lệnh từ xa với SSH

Gỡ lỗi từ xa cho phép bạn duyệt qua một chương trình cục bộ trong Mã VS khi chương trình đó chạy trên máy tính từ xa. Không cần cài đặt Mã VS trên máy tính từ xa. Để tăng cường bảo mật, bạn có thể muốn hoặc cần sử dụng kết nối an toàn, chẳng hạn như SSH, tới máy tính từ xa khi gỡ lỗi

Ghi chú. Trên máy tính Windows, bạn có thể cần cài đặt Windows 10 OpenSSH để có lệnh

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

Các bước sau phác thảo quy trình chung để thiết lập đường hầm SSH. Đường hầm SSH cho phép bạn làm việc trên máy cục bộ của mình như thể bạn đang làm việc trực tiếp trên điều khiển từ xa theo cách an toàn hơn so với khi một cổng được mở để truy cập công khai

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

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

    {
      "name": "Attach",
      "type": "python",
      "request": "attach",
      "connect": {
        "host": "remote-machine-name", // replace this with remote machine name
        "port": 5678
      }
    }
    
    6 [có trong
    {
      "name": "Attach",
      "type": "python",
      "request": "attach",
      "connect": {
        "host": "remote-machine-name", // replace this with remote machine name
        "port": 5678
      }
    }
    
    7 trên Linux và trong
    {
      "name": "Attach",
      "type": "python",
      "request": "attach",
      "connect": {
        "host": "remote-machine-name", // replace this with remote machine name
        "port": 5678
      }
    }
    
    8 trên Windows] và thêm hoặc sửa đổi cài đặt sau

    AllowTcpForwarding yes
    

    Ghi chú. Mặc định cho AllowTcpForwarding là có, vì vậy bạn có thể không cần thực hiện thay đổi

  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, hãy 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 máy tính cục bộ

  1. Tạo đườ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 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 cũng như đị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 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ủ lưu trữ 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

Giờ đây, một đường hầm SSH đã được thiết lập cho 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 chương trình gỡ lỗi 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 [mặc dù không bắt buộc phải sử dụng một dạng môi trường ảo, đây là phương pháp hay nhất được khuyến nghị]

  3. Máy tính điều khiển từ xa. có hai cách để chỉ định cách đính kèm vào quy trình từ xa

    1. Trong mã nguồn, hãy 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 chương trình tạm dừng cho đến khi trình gỡ lỗi đính kèm

    2. Khởi chạy quy trình từ xa thông qua gỡ lỗi, chẳng hạn

      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 cách sử dụng
      AllowTcpForwarding yes
      
      6, với địa chỉ IP riêng của máy tính từ xa là
      AllowTcpForwarding yes
      
      7 và lắng 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 trên máy tính từ xa. Việc thêm các dòng này đảm bảo rằng mã nguồn trên cả hai máy tính khớp với từng dòng

    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]] in VS Code, select the Python: Attach configuration

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

  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 sẽ dừng trên các điểm dừng được đặt cục bộ của bạn, cho phép bạn duyệt qua mã, kiểm tra các biến và thực hiện tất cả các hành động gỡ lỗi khác. Các biểu thức mà bạn nhập trong Bảng điều khiển gỡ lỗi cũng được chạy trên máy tính từ xa

    Xuất văn bản ra thiết bị xuất chuẩn, như từ câu lệnh

    {
      "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. Tuy nhiên, các đầu ra khác, chẳng hạn như các sơ đồ đồ họa từ một gói như matplotlib, chỉ xuất hiện trên máy tính từ xa

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

    Trên thanh công cụ này, nút ngắt kết nối [ ⇧F5 [Windows, Linux Shift+F5< . Nút khởi động lại []] stops the debugger and allows the remote program to run to completion. The restart button [⇧⌘F5 [Windows, Linux Ctrl+Shift+F5]] restarts the debugger on the local computer but does not restart the remote program. Use the restart button only when you've already restarted the remote program and need to reattach the debugger.

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

Khi bạn tạo

{
  "name": "Python: Attach",
  "type": "python",
  "request": "attach",
  "connect": {
    "host": "localhost",
    "port": 5678
  }
}
1 lần đầu tiên, có hai cấu hình tiêu chuẩn chạy tệp hoạt động trong trình chỉnh sửa ở thiết bị đầu cuối tích hợp [bên trong Mã VS] hoặc thiết bị đầu cuối bên ngoài [bên ngoài Mã VS]

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 có trong 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 một 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 khởi động trình gỡ lỗi, hãy tạo mục nhập cấu hình như sau

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ẽ sử dụng;

{
  "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. khởi động 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. đính kèm trình gỡ lỗi vào quy trình đang chạy. Xem 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ấu hình mặc định, sử dụng tệp hiện đang hoạt động trong trình chỉnh sửa. Bằng cách chỉ định một tệp khởi động cụ thể, bạn luôn có thể chắc chắn khởi chạy chương trình của mình với cùng một điểm vào bất kể tệp nào đang mở. Ví dụ

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

Bạn cũng có thể dựa vào một đường dẫn tương đối từ thư mục gốc của không gian làm việc. Ví dụ: nếu root 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ô-đun cần gỡ lỗi, tương tự như đối số

AllowTcpForwarding yes
9 khi chạy ở dòng lệnh. Để biết thêm thông tin, xem

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

Đường dẫn đầy đủ trỏ đến trình thông dịch Python được sử dụng để gỡ lỗi

Nếu không được chỉ định, cài đặt này sẽ 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, hãy 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

Ngoài ra, bạn có thể sử dụng biến môi trường tùy chỉnh được xác định trên mỗi nền tảng để chứa đường dẫn đầy đủ tới trình thông dịch Python để sử dụng, do đó không cần đường dẫn thư mục nào khác

Nếu bạn cần truyền đối số cho trình thông dịch Python, bạn có thể sử dụng thuộc tính

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 tới trình thông dịch Python bằ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. Ví dụ: mỗi phần tử của chuỗi đối số được phân tách bằng dấu cách phải được chứa trong dấu ngoặc kép

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, ngắt trình gỡ lỗi ở dòng đầu tiên của chương trình đang đượ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à các giá trị mặc định cho

python3 -m debugpy --listen 1.2.3.4:5678 --wait-for-client -m myproject
9 không bị sửa đổi

Giá trịNơi đầu ra được hiển thị
python -m debugpy --listen 5678 ./myscript.py
00VS Bảng điều khiển gỡ lỗi mã. 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ị.
python -m debugpy --listen 5678 ./myscript.py
02 [mặc định] Thiết bị đầu cuối tích hợp mã VS. 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
04Cửa sổ bảng đ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

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

Có nhiều 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 sẽ được sử dụng khi kiểm tra gỡ lỗi 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 Chạy tệp Python ở phía trên bên phải của trình chỉnh sửa [bất kể tùy chọn Chạy tệp Python hoặc Gỡ lỗi tệp Python mà nút cung cấp được sử dụng]. Ghi chú. Không thể sử dụng tùy chọn
python -m debugpy --listen 5678 ./myscript.py
06 để khởi động trình gỡ lỗi thông qua F5 hoặc Chạy > Bắt đầu gỡ lỗi.

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

Cho phép tự động tải lại trình gỡ lỗi khi các thay đổi được thực hiện đối với mã sau khi quá trình thực thi trình gỡ lỗi đạt đến điểm dừng. Để kích hoạt tính năng này, hãy đặt

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

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

*Ghi chú. Khi trình gỡ lỗi thực hiện tải lại, mã chạy khi nhập có thể được thực thi lại. Để tránh tình trạng này, hãy cố gắng chỉ sử dụng nhập, hằng số và định nghĩa trong mô-đun của bạn, đặt tất cả mã vào các hàm. Ngoài ra, bạn cũng có thể sử dụng séc

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

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

Chỉ định có bật gỡ lỗi quy trình con hay không. Mặc định là

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

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ỏ 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 khởi động trình gỡ lỗi trên
python -m debugpy --listen 5678 ./myscript.py
24, thì các đường dẫn tương đối tới tệp dữ liệu sẽ thay đổi tùy thuộc vào giá trị của
python -m debugpy --listen 5678 ./myscript.py
17

cwdRelative path to data fileOmitted or
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 integrationTerminal và externalTerminal], đầu ra của chương trình không được hiển thị trong cửa sổ đầu ra của trình gỡ lỗi

Tùy chọn này thường bị tắt 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 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 được đặt thành

python3 -m debugpy --listen 1.2.3.4:5678 --wait-for-client -m myproject
6 [mặc định], chỉ hạn chế gỡ lỗi đối với mã do người dùng viết. Đặt thành
python3 -m debugpy --listen 1.2.3.4:5678 --wait-for-client -m myproject
7 để cũng 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, sẽ kích hoạt các tính năng gỡ lỗi dành riêng 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. Cần sử dụng bảng điều khiển bên ngoài để lấy 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, hãy đảm bảo rằng ứng dụng Kim tự tháp được khởi chạy bằng 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 quy trình trình gỡ lỗi ngoài các biến môi trường hệ thống mà trình gỡ lỗi luôn kế thừa. Các giá trị cho các biến này phải được nhập dưới dạng chuỗi

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

Đường dẫn tùy chọn đến tệp chứa định nghĩa biến môi trường. Thấy

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, cho phép gỡ lỗi mã vá khỉ gevent

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, sẽ kích hoạt các tính năng sửa lỗi dành riêng cho khung tạo mẫu Jinja

Điểm dừng và điểm đăng nhập

Tiện ích mở rộng Python hỗ trợ và mã gỡ lỗi. Để biết hướng dẫn ngắn về gỡ lỗi cơ bản và sử dụng điểm dừng, hãy xem

Điểm dừng có điều kiện

Điểm dừng cũng có thể được đặt để kích hoạt dựa trên biểu thức, số lần truy cập hoặc kết hợp cả hai. Tiện ích mở rộng Python hỗ trợ số lần truy cập là số nguyên, ngoài các số nguyên đứng trước các toán tử ==, >, >=,

Chủ Đề