Đối số tùy chọn trong php

người dùng www www; . không có worker_processes 5; . 1 nhật ký/lỗi error_log. khúc gỗ; . pid; . 1024 } http { bao gồm conf/mime. các loại; . conf; . conf; . chỉ mục html. chỉ mục htm. php; . đăng nhập chính; . com www. miền1. com; . truy cập. đăng nhập chính; . php$ { fastcgi_pass 127. 0. 0. 1. 1025; . com www. miền2. com; . truy cập. đăng nhập chính; . jav. js. css. tốc biến. phương tiện truyền thông. tĩnh)/ { gốc /var/www/ảo/lớn. máy chủ. com/htdocs; . //127. 0. 0. 1. 8080; . 0. 0. 3. trọng lượng 8000=5; . 0. 0. 3. 8001 cân=5; . 168. 0. 1. 8000; . 168. 0. 1. 8001; . máy chủ. com; . máy chủ. truy cập. đăng nhập chính; . //big_server_com;

Một trong những tính năng chính của Visual Studio Code là khả năng hỗ trợ gỡ lỗi tuyệt vời của nó. Trình gỡ lỗi tích hợp của VS Code giúp tăng tốc vòng lặp chỉnh sửa, biên dịch và gỡ lỗi của bạn

Đối số tùy chọn trong php

Tiện ích mở rộng trình gỡ lỗi

Mã VS có hỗ trợ gỡ lỗi tích hợp cho Nút. js và có thể gỡ lỗi JavaScript, TypeScript hoặc bất kỳ ngôn ngữ nào khác được dịch sang JavaScript

Để gỡ lỗi các ngôn ngữ và thời gian chạy khác (bao gồm PHP, Ruby, Go, C#, Python, C++, PowerShell và nhiều ngôn ngữ khác), hãy tìm các tiện ích mở rộng Debuggers trong Thị trường mã VS hoặc chọn Cài đặt trình gỡ lỗi bổ sung trong menu Chạy cấp cao nhất

Dưới đây là một số tiện ích mở rộng phổ biến bao gồm hỗ trợ gỡ lỗi

Mẹo. Các tiện ích mở rộng được hiển thị ở trên được truy vấn động. Chọn một ô tiện ích mở rộng ở trên để đọc mô tả và đánh giá nhằm quyết định tiện ích mở rộng nào phù hợp nhất với bạn

Bắt đầu gỡ lỗi

Tài liệu sau dựa trên Node tích hợp. js, nhưng hầu hết các khái niệm và tính năng cũng có thể áp dụng cho các trình gỡ lỗi khác

Trước tiên, rất hữu ích khi tạo một Nút mẫu. js trước khi đọc về gỡ lỗi. Bạn có thể theo dõi Nút. js hướng dẫn cài đặt Node. js và tạo ứng dụng JavaScript "Xin chào thế giới" đơn giản (

{
  "type": "node",
  "request": "launch",
  "name": "Launch Program",
  "program": "${workspaceFolder}/app.js",
  "cwd": "${workspaceFolder}",
  "args": ["${env:USERNAME}"]
}
0). Khi bạn đã thiết lập một ứng dụng đơn giản, trang này sẽ đưa bạn qua các tính năng gỡ lỗi Mã VS

Chế độ xem Chạy và Gỡ lỗi

Để hiển thị chế độ xem Chạy và gỡ lỗi, hãy chọn biểu tượng Chạy và gỡ lỗi trong Thanh hoạt động ở bên cạnh Mã VS. Bạn cũng có thể sử dụng phím tắt ⇧⌘D (Windows, Linux Ctrl+Shift+D).

Đối số tùy chọn trong php

Chế độ xem Chạy và Gỡ lỗi hiển thị tất cả thông tin liên quan đến việc chạy và gỡ lỗi và có một thanh trên cùng với các lệnh gỡ lỗi và cài đặt cấu hình

Nếu chạy và gỡ lỗi chưa được định cấu hình (không có

{
  "type": "node",
  "request": "launch",
  "name": "Launch Program",
  "program": "${workspaceFolder}/app.js",
  "cwd": "${workspaceFolder}",
  "args": ["${env:USERNAME}"]
}
1 nào được tạo), Mã VS hiển thị chế độ xem Bắt đầu chạy

Đối số tùy chọn trong php

chạy menu

Menu Run cấp cao nhất có các lệnh chạy và gỡ lỗi phổ biến nhất

Đối số tùy chọn trong php

Khởi chạy cấu hình

Để chạy hoặc gỡ lỗi một ứng dụng đơn giản trong Mã VS, hãy chọn Chạy và gỡ lỗi trên giao diện bắt đầu gỡ lỗi hoặc nhấn F5 và Mã VS sẽ .

Tuy nhiên, đối với hầu hết các tình huống gỡ lỗi, việc tạo tệp cấu hình khởi chạy sẽ có lợi vì nó cho phép bạn định cấu hình và lưu chi tiết thiết lập gỡ lỗi. Mã VS tiếp tục gỡ lỗi thông tin cấu hình trong tệp

{
  "type": "node",
  "request": "launch",
  "name": "Launch Program",
  "program": "${workspaceFolder}/app.js",
  "cwd": "${workspaceFolder}",
  "args": ["${env:USERNAME}"]
}
1 nằm trong thư mục
{
  "type": "node",
  "request": "launch",
  "name": "Launch Program",
  "program": "${workspaceFolder}/app.js",
  "cwd": "${workspaceFolder}",
  "args": ["${env:USERNAME}"]
}
3 trong không gian làm việc của bạn (thư mục gốc của dự án) hoặc trong hoặc

Để tạo tệp

{
  "type": "node",
  "request": "launch",
  "name": "Launch Program",
  "program": "${workspaceFolder}/app.js",
  "cwd": "${workspaceFolder}",
  "args": ["${env:USERNAME}"]
}
1, hãy nhấp vào nút tạo tệp khởi chạy. json trong giao diện Run start

Đối số tùy chọn trong php

Mã VS sẽ cố gắng tự động phát hiện môi trường gỡ lỗi của bạn, nhưng nếu điều này không thành công, bạn sẽ phải chọn nó theo cách thủ công

Đối số tùy chọn trong php

Đây là cấu hình khởi chạy được tạo cho Node. gỡ lỗi js

{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "node",
      "request": "launch",
      "name": "Launch Program",
      "skipFiles": ["/**"],
      "program": "${workspaceFolder}\\app.js"
    }
  ]
}

Nếu bạn quay lại chế độ xem File Explorer ( ⇧⌘E (Windows, Linux Ctrl . )), you'll see that VS Code has created a

{
  "type": "node",
  "request": "launch",
  "name": "Launch Program",
  "program": "${workspaceFolder}/app.js",
  "cwd": "${workspaceFolder}",
  "args": ["${env:USERNAME}"]
}
3 folder and added the
{
  "type": "node",
  "request": "launch",
  "name": "Launch Program",
  "program": "${workspaceFolder}/app.js",
  "cwd": "${workspaceFolder}",
  "args": ["${env:USERNAME}"]
}
1 file to your workspace.

Đối số tùy chọn trong php

Ghi chú. Bạn có thể gỡ lỗi một ứng dụng đơn giản ngay cả khi bạn không mở thư mục trong Mã VS, nhưng không thể quản lý cấu hình khởi chạy và thiết lập gỡ lỗi nâng cao. Thanh trạng thái mã VS có màu tím nếu bạn không mở thư mục

Lưu ý rằng các thuộc tính có sẵn trong cấu hình khởi chạy sẽ khác nhau giữa trình gỡ lỗi và trình gỡ lỗi. Bạn có thể sử dụng đề xuất IntelliSense ( ⌃Space (Windows, Linux Ctrl+Space)) to find out which attributes exist for a specific debugger. Hover help is also available for all attributes.

Đừng cho rằng một thuộc tính có sẵn cho một trình gỡ lỗi cũng tự động hoạt động cho các trình gỡ lỗi khác. Nếu bạn thấy các dòng chữ nguệch ngoạc màu xanh lá cây trong cấu hình khởi chạy của mình, hãy di chuột qua chúng để tìm hiểu vấn đề là gì và cố gắng khắc phục chúng trước khi khởi chạy phiên gỡ lỗi

Đối số tùy chọn trong php

Xem lại tất cả các giá trị được tạo tự động và đảm bảo rằng chúng có ý nghĩa đối với dự án và môi trường gỡ lỗi của bạn

Khởi chạy so với đính kèm cấu hình

Trong Mã VS, có hai chế độ gỡ lỗi cốt lõi, Khởi chạy và Đính kèm, xử lý hai quy trình công việc và phân đoạn khác nhau của nhà phát triển. Tùy thuộc vào quy trình làm việc của bạn, có thể gây nhầm lẫn khi biết loại cấu hình nào phù hợp với dự án của bạn

Nếu bạn đến từ nền tảng Công cụ dành cho nhà phát triển của trình duyệt, bạn có thể không quen với việc "khởi chạy từ công cụ của mình" vì phiên bản trình duyệt của bạn đã mở. Khi bạn mở DevTools, bạn chỉ cần đính kèm DevTools vào tab trình duyệt đang mở của mình. Mặt khác, nếu bạn đến từ nền tảng máy chủ hoặc máy tính để bàn, việc trình chỉnh sửa khởi chạy quy trình của bạn cho bạn là điều bình thường và trình chỉnh sửa của bạn sẽ tự động đính kèm trình gỡ lỗi của nó vào quy trình mới khởi chạy

Cách tốt nhất để giải thích sự khác biệt giữa khởi chạy và đính kèm là coi cấu hình khởi chạy như một công thức về cách khởi động ứng dụng của bạn ở chế độ gỡ lỗi trước khi Mã VS gắn vào nó, trong khi cấu hình đính kèm là công thức về cách kết nối Mã VS

Trình gỡ lỗi VS Code thường hỗ trợ khởi chạy chương trình ở chế độ gỡ lỗi hoặc đính kèm vào chương trình đã chạy ở chế độ gỡ lỗi. Tùy thuộc vào yêu cầu (

{
  "type": "node",
  "request": "launch",
  "name": "Launch Program",
  "program": "${workspaceFolder}/app.js",
  "cwd": "${workspaceFolder}",
  "args": ["${env:USERNAME}"]
}
7 hoặc
{
  "type": "node",
  "request": "launch",
  "name": "Launch Program",
  "program": "${workspaceFolder}/app.js",
  "cwd": "${workspaceFolder}",
  "args": ["${env:USERNAME}"]
}
8), các thuộc tính khác nhau được yêu cầu và việc xác thực và đề xuất của
{
  "type": "node",
  "request": "launch",
  "name": "Launch Program",
  "program": "${workspaceFolder}/app.js",
  "cwd": "${workspaceFolder}",
  "args": ["${env:USERNAME}"]
}
1 của Mã VS sẽ giúp ích cho điều đó

Thêm cấu hình mới

Để thêm cấu hình mới vào

{
  "type": "node",
  "request": "launch",
  "name": "Launch Program",
  "program": "${workspaceFolder}/app.js",
  "cwd": "${workspaceFolder}",
  "args": ["${env:USERNAME}"]
}
1 hiện có, hãy sử dụng một trong các kỹ thuật sau

  • Sử dụng IntelliSense nếu con trỏ của bạn nằm bên trong mảng cấu hình
  • Nhấn nút Thêm cấu hình để gọi đoạn mã IntelliSense ở đầu mảng
  • Chọn tùy chọn Thêm cấu hình trong menu Chạy

Đối số tùy chọn trong php

Mã VS cũng hỗ trợ các cấu hình khởi chạy hỗn hợp để bắt đầu nhiều cấu hình cùng một lúc;

Để bắt đầu phiên gỡ lỗi, trước tiên hãy chọn cấu hình có tên Khởi chạy Chương trình bằng menu thả xuống Cấu hình trong chế độ xem Chạy và Gỡ lỗi. Khi bạn đã đặt cấu hình khởi chạy, hãy bắt đầu phiên gỡ lỗi của mình bằng F5 .

Ngoài ra, bạn có thể chạy cấu hình của mình thông qua Bảng lệnh ( ⇧⌘P (Windows, Linux Ctrl+Shift+P)) by filtering on Debug: Select and Start Debugging or typing

{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "node",
      "request": "launch",
      "name": "Launch Program",
      "program": "${workspaceFolder}/node_modules/gulp/bin/gulpfile.js",
      "args": ["myFolder/path/app.js"],
      "windows": {
        "args": ["myFolder\\path\\app.js"]
      }
    }
  ]
}
1 and selecting the configuration you want to debug.

Ngay khi phiên gỡ lỗi bắt đầu, bảng DEBUG CONSOLE sẽ hiển thị và hiển thị đầu ra gỡ lỗi, đồng thời Thanh trạng thái thay đổi màu (màu cam cho chủ đề màu mặc định)

Đối số tùy chọn trong php

Ngoài ra, trạng thái gỡ lỗi xuất hiện trên Thanh trạng thái hiển thị cấu hình gỡ lỗi đang hoạt động. Bằng cách chọn trạng thái gỡ lỗi, người dùng có thể thay đổi cấu hình khởi chạy đang hoạt động và bắt đầu gỡ lỗi mà không cần mở chế độ xem Chạy và gỡ lỗi

Đối số tùy chọn trong php

hành động gỡ lỗi

Khi phiên gỡ lỗi bắt đầu, thanh công cụ Gỡ lỗi sẽ xuất hiện trên đầu trình chỉnh sửa

Đối số tùy chọn trong php

Hành độngGiải thíchTiếp tục/Tạm dừng
F5 Tiếp tục. Tiếp tục thực thi chương trình/tập lệnh bình thường (đến điểm ngắt tiếp theo).
Tạm ngừng. Kiểm tra việc thực thi mã ở dòng hiện tại và gỡ lỗi từng dòng. Bước qua
F10 Thực thi phương thức tiếp theo dưới dạng một lệnh mà không cần kiểm tra hoặc làm theo các bước thành phần của nó. Bước vào
F11 Nhập phương thức tiếp theo để thực hiện từng dòng một. Bước Ra Ngoài
⇧F11 (Windows, Linux Shift+F11 )When inside a method or subroutine, return to the earlier execution context by completing remaining lines of the current method as though it were a single command.Restart
⇧⌘F5 (Windows, Linux Ctrl+Shift+F5 )Terminate the current program execution and start debugging again using the current run configuration.Stop
⇧F5 (Windows, Linux Shift+F5 )Terminate the current program execution.

Mẹo. Sử dụng cài đặt

{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "node",
      "request": "launch",
      "name": "Launch Program",
      "program": "${workspaceFolder}/node_modules/gulp/bin/gulpfile.js",
      "args": ["myFolder/path/app.js"],
      "windows": {
        "args": ["myFolder\\path\\app.js"]
      }
    }
  ]
}
2 để kiểm soát vị trí của thanh công cụ gỡ lỗi. Nó có thể là
{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "node",
      "request": "launch",
      "name": "Launch Program",
      "program": "${workspaceFolder}/node_modules/gulp/bin/gulpfile.js",
      "args": ["myFolder/path/app.js"],
      "windows": {
        "args": ["myFolder\\path\\app.js"]
      }
    }
  ]
}
3,
{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "node",
      "request": "launch",
      "name": "Launch Program",
      "program": "${workspaceFolder}/node_modules/gulp/bin/gulpfile.js",
      "args": ["myFolder/path/app.js"],
      "windows": {
        "args": ["myFolder\\path\\app.js"]
      }
    }
  ]
}
4 mặc định cho dạng xem Chạy và Gỡ lỗi hoặc
{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "node",
      "request": "launch",
      "name": "Launch Program",
      "program": "${workspaceFolder}/node_modules/gulp/bin/gulpfile.js",
      "args": ["myFolder/path/app.js"],
      "windows": {
        "args": ["myFolder\\path\\app.js"]
      }
    }
  ]
}
5. Thanh công cụ gỡ lỗi
{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "node",
      "request": "launch",
      "name": "Launch Program",
      "program": "${workspaceFolder}/node_modules/gulp/bin/gulpfile.js",
      "args": ["myFolder/path/app.js"],
      "windows": {
        "args": ["myFolder\\path\\app.js"]
      }
    }
  ]
}
3 có thể được kéo theo chiều ngang và cũng có thể kéo xuống khu vực trình chỉnh sửa

Chế độ chạy

Ngoài việc gỡ lỗi chương trình, VS Code còn hỗ trợ chạy chương trình. Gỡ lỗi. Hành động Chạy (Bắt đầu mà không gỡ lỗi) được kích hoạt bằng ⌃F5 (Windows, Linux Ctrl+F5) and uses the currently selected launch configuration. Many of the launch configuration attributes are supported in 'Run' mode. VS Code maintains a debug session while the program is running, and pressing the Stop button terminates the program.

Mẹo. Hành động Chạy luôn khả dụng, nhưng không phải tất cả các tiện ích mở rộng của trình gỡ lỗi đều hỗ trợ 'Chạy'. Trong trường hợp này, 'Chạy' sẽ giống như 'Gỡ lỗi'

Điểm dừng

Bạn có thể bật/tắt điểm ngắt bằng cách nhấp vào lề trình chỉnh sửa hoặc sử dụng F9 trên dòng hiện tại. Có thể thực hiện kiểm soát điểm ngắt tốt hơn (bật/tắt/áp dụng lại) trong phần BREAKPOINTS của chế độ xem Chạy và Gỡ lỗi.

  • Các điểm ngắt trong lề trình chỉnh sửa thường được hiển thị dưới dạng các vòng tròn màu đỏ
  • Điểm dừng bị vô hiệu hóa có một vòng tròn màu xám đầy
  • Khi phiên gỡ lỗi bắt đầu, các điểm dừng không thể đăng ký với trình gỡ lỗi sẽ chuyển thành vòng tròn rỗng màu xám. Điều tương tự cũng có thể xảy ra nếu nguồn được chỉnh sửa trong khi phiên gỡ lỗi không có hỗ trợ chỉnh sửa trực tiếp đang chạy

Nếu trình gỡ lỗi hỗ trợ phá vỡ các loại lỗi hoặc ngoại lệ khác nhau, thì chúng cũng sẽ có sẵn trong chế độ xem BREAKPOINTS

Lệnh Áp dụng lại tất cả các điểm dừng đặt lại tất cả các điểm dừng về vị trí ban đầu của chúng. Điều này hữu ích nếu môi trường gỡ lỗi của bạn "lười biếng" và "đặt sai chỗ" các điểm ngắt trong mã nguồn chưa được thực thi

Đối số tùy chọn trong php

Theo tùy chọn, các điểm dừng có thể được hiển thị trong thước đo tổng quan của trình chỉnh sửa bằng cách bật cài đặt

{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "node",
      "request": "launch",
      "name": "Launch Program",
      "program": "${workspaceFolder}/node_modules/gulp/bin/gulpfile.js",
      "args": ["myFolder/path/app.js"],
      "windows": {
        "args": ["myFolder\\path\\app.js"]
      }
    }
  ]
}
7

Đối số tùy chọn trong php

Điểm đăng nhập

Logpoint là một biến thể của breakpoint không "đột nhập" vào trình gỡ lỗi mà thay vào đó ghi một thông báo vào bảng điều khiển. Các điểm đăng nhập đặc biệt hữu ích để thêm ghi nhật ký trong khi gỡ lỗi các máy chủ sản xuất không thể tạm dừng hoặc dừng

Logpoint được biểu thị bằng biểu tượng hình "kim cương". Thông điệp tường trình là văn bản thuần túy nhưng có thể bao gồm các biểu thức được đánh giá trong dấu ngoặc nhọn ('{}')

Đối số tùy chọn trong php

Giống như các điểm ngắt thông thường, Điểm ghi có thể được bật hoặc tắt và cũng có thể được kiểm soát bởi một điều kiện và/hoặc số lần truy cập

Ghi chú. Điểm đăng nhập được hỗ trợ bởi Nút tích hợp của Mã VS. js, nhưng có thể được triển khai bởi các phần mở rộng gỡ lỗi khác. Ví dụ, các tiện ích mở rộng Python và Java hỗ trợ Logpoints

kiểm tra dữ liệu

Có thể kiểm tra các biến trong phần BIẾN của chế độ xem Chạy và Gỡ lỗi hoặc bằng cách di chuột qua nguồn của chúng trong trình chỉnh sửa. Các giá trị biến và đánh giá biểu thức có liên quan đến khung ngăn xếp đã chọn trong phần CALL STACK

Đối số tùy chọn trong php

Giá trị biến có thể được sửa đổi bằng hành động Đặt giá trị từ menu ngữ cảnh của biến. Ngoài ra, bạn có thể sử dụng tác vụ Sao chép giá trị để sao chép giá trị của biến hoặc tác vụ Sao chép dưới dạng biểu thức để sao chép một biểu thức nhằm truy cập vào biến

Các biến và biểu thức cũng có thể được đánh giá và xem trong phần XEM của chế độ xem Chạy và Gỡ lỗi

Đối số tùy chọn trong php

Tên và giá trị biến có thể được lọc bằng cách nhập trong khi tiêu điểm nằm trên phần BIẾN

Đối số tùy chọn trong php

Phóng. thuộc tính json

Có nhiều thuộc tính

{
  "type": "node",
  "request": "launch",
  "name": "Launch Program",
  "program": "${workspaceFolder}/app.js",
  "cwd": "${workspaceFolder}",
  "args": ["${env:USERNAME}"]
}
1 để giúp hỗ trợ các trình gỡ lỗi và tình huống gỡ lỗi khác nhau. Như đã đề cập ở trên, bạn có thể sử dụng IntelliSense ( ⌃Space (Windows, Linux Ctrl+Space)) to see the list of available attributes once you have specified a value for the
{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "node",
      "request": "launch",
      "name": "Launch Program",
      "program": "${workspaceFolder}/node_modules/gulp/bin/gulpfile.js",
      "args": ["myFolder/path/app.js"],
      "windows": {
        "args": ["myFolder\\path\\app.js"]
      }
    }
  ]
}
9 attribute.

Đối số tùy chọn trong php

Các thuộc tính sau là bắt buộc đối với mọi cấu hình khởi chạy

  • {
      "version": "0.2.0",
      "configurations": [
        {
          "type": "node",
          "request": "launch",
          "name": "Launch Program",
          "program": "${workspaceFolder}/node_modules/gulp/bin/gulpfile.js",
          "args": ["myFolder/path/app.js"],
          "windows": {
            "args": ["myFolder\\path\\app.js"]
          }
        }
      ]
    }
    
    9 - loại trình gỡ lỗi sẽ sử dụng cho cấu hình khởi chạy này. Mỗi tiện ích mở rộng gỡ lỗi được cài đặt đều giới thiệu một loại. Ví dụ:
    {
      "version": "0.2.0",
      "configurations": [
        {
          "type": "node",
          "request": "launch",
          "name": "Launch Program",
          "program": "${workspaceFolder}/node_modules/gulp/bin/gulpfile.js",
          "stopOnEntry": true,
          "osx": {
            "stopOnEntry": false
          }
        }
      ]
    }
    
    1 cho trình gỡ lỗi Node tích hợp hoặc
    {
      "version": "0.2.0",
      "configurations": [
        {
          "type": "node",
          "request": "launch",
          "name": "Launch Program",
          "program": "${workspaceFolder}/node_modules/gulp/bin/gulpfile.js",
          "stopOnEntry": true,
          "osx": {
            "stopOnEntry": false
          }
        }
      ]
    }
    
    2 và
    {
      "version": "0.2.0",
      "configurations": [
        {
          "type": "node",
          "request": "launch",
          "name": "Launch Program",
          "program": "${workspaceFolder}/node_modules/gulp/bin/gulpfile.js",
          "stopOnEntry": true,
          "osx": {
            "stopOnEntry": false
          }
        }
      ]
    }
    
    3 cho tiện ích mở rộng PHP và Go
  • {
      "version": "0.2.0",
      "configurations": [
        {
          "type": "node",
          "request": "launch",
          "name": "Launch Program",
          "program": "${workspaceFolder}/node_modules/gulp/bin/gulpfile.js",
          "stopOnEntry": true,
          "osx": {
            "stopOnEntry": false
          }
        }
      ]
    }
    
    4 - loại yêu cầu của cấu hình khởi chạy này. Hiện tại,
    {
      "type": "node",
      "request": "launch",
      "name": "Launch Program",
      "program": "${workspaceFolder}/app.js",
      "cwd": "${workspaceFolder}",
      "args": ["${env:USERNAME}"]
    }
    
    8 và
    {
      "type": "node",
      "request": "launch",
      "name": "Launch Program",
      "program": "${workspaceFolder}/app.js",
      "cwd": "${workspaceFolder}",
      "args": ["${env:USERNAME}"]
    }
    
    7 được hỗ trợ
  • {
      "version": "0.2.0",
      "configurations": [
        {
          "type": "node",
          "request": "launch",
          "name": "Launch Program",
          "program": "${workspaceFolder}/node_modules/gulp/bin/gulpfile.js",
          "stopOnEntry": true,
          "osx": {
            "stopOnEntry": false
          }
        }
      ]
    }
    
    7 - tên thân thiện với người đọc sẽ xuất hiện trong trình đơn thả xuống cấu hình khởi chạy Gỡ lỗi

Dưới đây là một số thuộc tính tùy chọn có sẵn cho tất cả các cấu hình khởi chạy

  • {
      "version": "0.2.0",
      "configurations": [
        {
          "type": "node",
          "request": "launch",
          "name": "Launch Program",
          "program": "${workspaceFolder}/node_modules/gulp/bin/gulpfile.js",
          "stopOnEntry": true,
          "osx": {
            "stopOnEntry": false
          }
        }
      ]
    }
    
    8 - sử dụng các thuộc tính
    {
      "version": "0.2.0",
      "configurations": [
        {
          "type": "node",
          "request": "launch",
          "name": "Launch Program",
          "program": "${workspaceFolder}/node_modules/gulp/bin/gulpfile.js",
          "stopOnEntry": true,
          "osx": {
            "stopOnEntry": false
          }
        }
      ]
    }
    
    9,
    "launch": {
        "version": "0.2.0",
        "configurations": [{
            "type": "node",
            "request": "launch",
            "name": "Launch Program",
            "program": "${file}"
        }]
    }
    
    0 và
    {
      "version": "0.2.0",
      "configurations": [
        {
          "type": "node",
          "request": "launch",
          "name": "Launch Program",
          "program": "${workspaceFolder}/node_modules/gulp/bin/gulpfile.js",
          "args": ["myFolder/path/app.js"],
          "windows": {
            "args": ["myFolder\\path\\app.js"]
          }
        }
      ]
    }
    
    5 trong đối tượng
    {
      "version": "0.2.0",
      "configurations": [
        {
          "type": "node",
          "request": "launch",
          "name": "Launch Program",
          "program": "${workspaceFolder}/node_modules/gulp/bin/gulpfile.js",
          "stopOnEntry": true,
          "osx": {
            "stopOnEntry": false
          }
        }
      ]
    }
    
    8, bạn có thể sắp xếp, nhóm và ẩn cấu hình cũng như tổ hợp trong trình đơn thả xuống cấu hình Gỡ lỗi và trong phần chọn nhanh Gỡ lỗi
  • "launch": {
        "version": "0.2.0",
        "configurations": [{
            "type": "node",
            "request": "launch",
            "name": "Launch Program",
            "program": "${file}"
        }]
    }
    
    3 - để khởi chạy tác vụ trước khi bắt đầu phiên gỡ lỗi, hãy đặt thuộc tính này thành nhãn của tác vụ được chỉ định trong tác vụ. json (trong thư mục
    {
      "type": "node",
      "request": "launch",
      "name": "Launch Program",
      "program": "${workspaceFolder}/app.js",
      "cwd": "${workspaceFolder}",
      "args": ["${env:USERNAME}"]
    }
    
    3 của không gian làm việc). Hoặc, điều này có thể được đặt thành
    "launch": {
        "version": "0.2.0",
        "configurations": [{
            "type": "node",
            "request": "launch",
            "name": "Launch Program",
            "program": "${file}"
        }]
    }
    
    5 để sử dụng tác vụ xây dựng mặc định của bạn
  • "launch": {
        "version": "0.2.0",
        "configurations": [{
            "type": "node",
            "request": "launch",
            "name": "Launch Program",
            "program": "${file}"
        }]
    }
    
    6 - để khởi chạy tác vụ vào cuối phiên gỡ lỗi, hãy đặt thuộc tính này thành tên của tác vụ được chỉ định trong tác vụ. json (trong thư mục
    {
      "type": "node",
      "request": "launch",
      "name": "Launch Program",
      "program": "${workspaceFolder}/app.js",
      "cwd": "${workspaceFolder}",
      "args": ["${env:USERNAME}"]
    }
    
    3 của không gian làm việc)
  • "launch": {
        "version": "0.2.0",
        "configurations": [{
            "type": "node",
            "request": "launch",
            "name": "Launch Program",
            "program": "${file}"
        }]
    }
    
    8 - thuộc tính này kiểm soát khả năng hiển thị của bảng điều khiển Gỡ lỗi trong phiên gỡ lỗi
  • "launch": {
        "version": "0.2.0",
        "configurations": [{
            "type": "node",
            "request": "launch",
            "name": "Launch Program",
            "program": "${file}"
        }]
    }
    
    9 - chỉ dành cho tác giả tiện ích mở rộng gỡ lỗi. thuộc tính này cho phép bạn kết nối với một cổng được chỉ định thay vì khởi chạy bộ điều hợp gỡ lỗi
  • {
      "name": "launch program that reads a file from stdin",
      "type": "node",
      "request": "launch",
      "program": "program.js",
      "console": "integratedTerminal",
      "args": ["<", "in.txt"]
    }
    
    0 - nếu bạn muốn mở một URL trong trình duyệt web bất cứ khi nào chương trình đang gỡ lỗi đưa ra một thông báo cụ thể tới bảng điều khiển gỡ lỗi hoặc thiết bị đầu cuối tích hợp. Chi tiết xem phần bên dưới

Nhiều trình gỡ lỗi hỗ trợ một số thuộc tính sau

  • {
      "name": "launch program that reads a file from stdin",
      "type": "node",
      "request": "launch",
      "program": "program.js",
      "console": "integratedTerminal",
      "args": ["<", "in.txt"]
    }
    
    1 - tệp thực thi hoặc tệp để chạy khi khởi chạy trình gỡ lỗi
  • {
      "name": "launch program that reads a file from stdin",
      "type": "node",
      "request": "launch",
      "program": "program.js",
      "console": "integratedTerminal",
      "args": ["<", "in.txt"]
    }
    
    2 - đối số được chuyển đến chương trình để gỡ lỗi
  • {
      "name": "launch program that reads a file from stdin",
      "type": "node",
      "request": "launch",
      "program": "program.js",
      "console": "integratedTerminal",
      "args": ["<", "in.txt"]
    }
    
    3 - biến môi trường (giá trị
    {
      "name": "launch program that reads a file from stdin",
      "type": "node",
      "request": "launch",
      "program": "program.js",
      "console": "integratedTerminal",
      "args": ["<", "in.txt"]
    }
    
    4 có thể được sử dụng để "xác định" một biến)
  • {
      "name": "launch program that reads a file from stdin",
      "type": "node",
      "request": "launch",
      "program": "program.js",
      "console": "integratedTerminal",
      "args": ["<", "in.txt"]
    }
    
    5 - đường dẫn đến tệp dotenv với các biến môi trường
  • {
      "name": "launch program that reads a file from stdin",
      "type": "node",
      "request": "launch",
      "program": "program.js",
      "console": "integratedTerminal",
      "args": ["<", "in.txt"]
    }
    
    6 - thư mục làm việc hiện tại để tìm các phụ thuộc và các tệp khác
  • {
      "name": "launch program that reads a file from stdin",
      "type": "node",
      "request": "launch",
      "program": "program.js",
      "console": "integratedTerminal",
      "args": ["<", "in.txt"]
    }
    
    7 - cổng khi gắn vào một tiến trình đang chạy
  • {
      "name": "launch program that reads a file from stdin",
      "type": "node",
      "request": "launch",
      "program": "program.js",
      "console": "integratedTerminal",
      "args": ["<", "in.txt"]
    }
    
    8 - nghỉ ngay khi chương trình ra mắt
  • {
      "name": "launch program that reads a file from stdin",
      "type": "node",
      "request": "launch",
      "program": "program.js",
      "console": "integratedTerminal",
      "args": ["<", "in.txt"]
    }
    
    9 - sử dụng loại bảng điều khiển nào, ví dụ:
    {
      "version": "0.2.0",
      "configurations": [
        {
          "type": "node",
          "request": "launch",
          "name": "Server",
          "program": "${workspaceFolder}/server.js"
        },
        {
          "type": "node",
          "request": "launch",
          "name": "Client",
          "program": "${workspaceFolder}/client.js"
        }
      ],
      "compounds": [
        {
          "name": "Server/Client",
          "configurations": ["Server", "Client"],
          "preLaunchTask": "${defaultBuildTask}",
          "stopAll": true
        }
      ]
    }
    
    0,
    {
      "version": "0.2.0",
      "configurations": [
        {
          "type": "node",
          "request": "launch",
          "name": "Server",
          "program": "${workspaceFolder}/server.js"
        },
        {
          "type": "node",
          "request": "launch",
          "name": "Client",
          "program": "${workspaceFolder}/client.js"
        }
      ],
      "compounds": [
        {
          "name": "Server/Client",
          "configurations": ["Server", "Client"],
          "preLaunchTask": "${defaultBuildTask}",
          "stopAll": true
        }
      ]
    }
    
    1 hoặc
    {
      "version": "0.2.0",
      "configurations": [
        {
          "type": "node",
          "request": "launch",
          "name": "Server",
          "program": "${workspaceFolder}/server.js"
        },
        {
          "type": "node",
          "request": "launch",
          "name": "Client",
          "program": "${workspaceFolder}/client.js"
        }
      ],
      "compounds": [
        {
          "name": "Server/Client",
          "configurations": ["Server", "Client"],
          "preLaunchTask": "${defaultBuildTask}",
          "stopAll": true
        }
      ]
    }
    
    2

thay thế biến

Mã VS cung cấp các đường dẫn thường được sử dụng và các giá trị khác dưới dạng biến và hỗ trợ thay thế biến bên trong các chuỗi trong

{
  "type": "node",
  "request": "launch",
  "name": "Launch Program",
  "program": "${workspaceFolder}/app.js",
  "cwd": "${workspaceFolder}",
  "args": ["${env:USERNAME}"]
}
1. Điều này có nghĩa là bạn không phải sử dụng đường dẫn tuyệt đối trong cấu hình gỡ lỗi. Ví dụ:
{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "node",
      "request": "launch",
      "name": "Server",
      "program": "${workspaceFolder}/server.js"
    },
    {
      "type": "node",
      "request": "launch",
      "name": "Client",
      "program": "${workspaceFolder}/client.js"
    }
  ],
  "compounds": [
    {
      "name": "Server/Client",
      "configurations": ["Server", "Client"],
      "preLaunchTask": "${defaultBuildTask}",
      "stopAll": true
    }
  ]
}
4 cung cấp đường dẫn gốc của thư mục không gian làm việc,
{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "node",
      "request": "launch",
      "name": "Server",
      "program": "${workspaceFolder}/server.js"
    },
    {
      "type": "node",
      "request": "launch",
      "name": "Client",
      "program": "${workspaceFolder}/client.js"
    }
  ],
  "compounds": [
    {
      "name": "Server/Client",
      "configurations": ["Server", "Client"],
      "preLaunchTask": "${defaultBuildTask}",
      "stopAll": true
    }
  ]
}
5 mở tệp trong trình chỉnh sửa đang hoạt động và
{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "node",
      "request": "launch",
      "name": "Server",
      "program": "${workspaceFolder}/server.js"
    },
    {
      "type": "node",
      "request": "launch",
      "name": "Client",
      "program": "${workspaceFolder}/client.js"
    }
  ],
  "compounds": [
    {
      "name": "Server/Client",
      "configurations": ["Server", "Client"],
      "preLaunchTask": "${defaultBuildTask}",
      "stopAll": true
    }
  ]
}
6 biến môi trường 'Tên'. Bạn có thể xem danh sách đầy đủ các biến được xác định trước trong Tham chiếu biến hoặc bằng cách gọi IntelliSense bên trong thuộc tính chuỗi
{
  "type": "node",
  "request": "launch",
  "name": "Launch Program",
  "program": "${workspaceFolder}/app.js",
  "cwd": "${workspaceFolder}",
  "args": ["${env:USERNAME}"]
}
1

{
  "type": "node",
  "request": "launch",
  "name": "Launch Program",
  "program": "${workspaceFolder}/app.js",
  "cwd": "${workspaceFolder}",
  "args": ["${env:USERNAME}"]
}

Thuộc tính dành riêng cho nền tảng

{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "node",
      "request": "launch",
      "name": "Server",
      "program": "${workspaceFolder}/server.js"
    },
    {
      "type": "node",
      "request": "launch",
      "name": "Client",
      "program": "${workspaceFolder}/client.js"
    }
  ],
  "compounds": [
    {
      "name": "Server/Client",
      "configurations": ["Server", "Client"],
      "preLaunchTask": "${defaultBuildTask}",
      "stopAll": true
    }
  ]
}
8 hỗ trợ xác định các giá trị (ví dụ: các đối số được truyền cho chương trình) phụ thuộc vào hệ điều hành nơi trình gỡ lỗi đang chạy. Để làm như vậy, hãy đặt một ký tự dành riêng cho nền tảng vào tệp
{
  "type": "node",
  "request": "launch",
  "name": "Launch Program",
  "program": "${workspaceFolder}/app.js",
  "cwd": "${workspaceFolder}",
  "args": ["${env:USERNAME}"]
}
1 và chỉ định các thuộc tính tương ứng bên trong ký tự đó

Dưới đây là một ví dụ chuyển

var express = require('express');
var app = express();

app.get('/', function(req, res) {
  res.send('Hello World!');
});

app.listen(3000, function() {
  console.log('Example app listening on port 3000!');
});
0 cho chương trình theo cách khác trên Windows

{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "node",
      "request": "launch",
      "name": "Launch Program",
      "program": "${workspaceFolder}/node_modules/gulp/bin/gulpfile.js",
      "args": ["myFolder/path/app.js"],
      "windows": {
        "args": ["myFolder\\path\\app.js"]
      }
    }
  ]
}

Các thuộc tính vận hành hợp lệ là

var express = require('express');
var app = express();

app.get('/', function(req, res) {
  res.send('Hello World!');
});

app.listen(3000, function() {
  console.log('Example app listening on port 3000!');
});
1 cho Windows,
var express = require('express');
var app = express();

app.get('/', function(req, res) {
  res.send('Hello World!');
});

app.listen(3000, function() {
  console.log('Example app listening on port 3000!');
});
2 cho Linux và
var express = require('express');
var app = express();

app.get('/', function(req, res) {
  res.send('Hello World!');
});

app.listen(3000, function() {
  console.log('Example app listening on port 3000!');
});
3 cho macOS. Các thuộc tính được xác định trong phạm vi cụ thể của hệ điều hành sẽ ghi đè các thuộc tính được xác định trong phạm vi toàn cầu

Xin lưu ý rằng thuộc tính

{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "node",
      "request": "launch",
      "name": "Launch Program",
      "program": "${workspaceFolder}/node_modules/gulp/bin/gulpfile.js",
      "args": ["myFolder/path/app.js"],
      "windows": {
        "args": ["myFolder\\path\\app.js"]
      }
    }
  ]
}
9 không thể được đặt bên trong phần dành riêng cho nền tảng, vì
{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "node",
      "request": "launch",
      "name": "Launch Program",
      "program": "${workspaceFolder}/node_modules/gulp/bin/gulpfile.js",
      "args": ["myFolder/path/app.js"],
      "windows": {
        "args": ["myFolder\\path\\app.js"]
      }
    }
  ]
}
9 gián tiếp xác định nền tảng trong các tình huống gỡ lỗi từ xa và điều đó sẽ dẫn đến sự phụ thuộc theo chu kỳ

Trong ví dụ bên dưới, việc gỡ lỗi chương trình luôn dừng ở mục ngoại trừ trên macOS

{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "node",
      "request": "launch",
      "name": "Launch Program",
      "program": "${workspaceFolder}/node_modules/gulp/bin/gulpfile.js",
      "stopOnEntry": true,
      "osx": {
        "stopOnEntry": false
      }
    }
  ]
}

Cấu hình khởi chạy toàn cầu

Mã VS hỗ trợ thêm một đối tượng

var express = require('express');
var app = express();

app.get('/', function(req, res) {
  res.send('Hello World!');
});

app.listen(3000, function() {
  console.log('Example app listening on port 3000!');
});
6 bên trong cài đặt Người dùng của bạn. Cấu hình
var express = require('express');
var app = express();

app.get('/', function(req, res) {
  res.send('Hello World!');
});

app.listen(3000, function() {
  console.log('Example app listening on port 3000!');
});
6 này sau đó sẽ được chia sẻ trên các không gian làm việc của bạn. Ví dụ

"launch": {
    "version": "0.2.0",
    "configurations": [{
        "type": "node",
        "request": "launch",
        "name": "Launch Program",
        "program": "${file}"
    }]
}

Chủ đề điểm dừng nâng cao

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

Tính năng gỡ lỗi mạnh mẽ của Mã VS là khả năng đặt điều kiện dựa trên biểu thức, số lần truy cập hoặc kết hợp cả hai

  • điều kiện biểu thức. Điểm dừng sẽ bị tấn công bất cứ khi nào biểu thức ước tính thành
    var express = require('express');
    var app = express();
    
    app.get('/', function(req, res) {
      res.send('Hello World!');
    });
    
    app.listen(3000, function() {
      console.log('Example app listening on port 3000!');
    });
    
    8
  • số lượt truy cập. 'Số lần truy cập' kiểm soát số lần điểm dừng cần được nhấn trước khi nó 'phá vỡ' quá trình thực thi. Liệu 'số lần truy cập' có được tôn trọng hay không và cú pháp chính xác của biểu thức có khác nhau giữa các tiện ích mở rộng của trình gỡ lỗi hay không

Bạn có thể thêm điều kiện và/hoặc số lần truy cập khi tạo điểm ngắt nguồn (với tác vụ Thêm điểm ngắt có điều kiện) hoặc khi sửa đổi điểm hiện có (với tác vụ Chỉnh sửa điều kiện). Trong cả hai trường hợp, hộp văn bản nội tuyến có menu thả xuống sẽ mở ra nơi bạn có thể nhập biểu thức

Đối số tùy chọn trong php

Hỗ trợ chỉnh sửa điều kiện và số lần truy cập cũng được hỗ trợ cho các điểm ngắt chức năng và ngoại lệ. Bạn có thể bắt đầu chỉnh sửa điều kiện từ menu ngữ cảnh hoặc hành động Chỉnh sửa điều kiện nội tuyến mới

Ví dụ về chỉnh sửa điều kiện trong chế độ xem BREAKPOINTS.

Đối số tùy chọn trong php

Nếu trình gỡ lỗi không hỗ trợ các điểm ngắt có điều kiện, các hành động Thêm điểm ngắt có điều kiện và Chỉnh sửa điều kiện sẽ bị thiếu

Điểm dừng nội tuyến

Các điểm ngắt nội tuyến sẽ chỉ bị tấn công khi thực thi đến cột được liên kết với điểm ngắt nội tuyến. Điều này đặc biệt hữu ích khi gỡ lỗi mã rút gọn chứa nhiều câu lệnh trong một dòng

Có thể đặt điểm dừng nội tuyến bằng cách sử dụng ⇧F9 (Windows, Linux Shift+F9) or through the context menu during a debug session. Inline breakpoints are shown inline in the editor.

Điểm dừng nội tuyến cũng có thể có điều kiện. Có thể chỉnh sửa nhiều điểm dừng trên một dòng thông qua menu ngữ cảnh ở lề trái của trình chỉnh sửa

điểm dừng chức năng

Thay vì đặt các điểm ngắt trực tiếp trong mã nguồn, trình gỡ lỗi có thể hỗ trợ tạo các điểm ngắt bằng cách chỉ định tên hàm. Điều này rất hữu ích trong các trường hợp không có nguồn nhưng đã biết tên hàm

Điểm dừng chức năng được tạo bằng cách nhấn nút + trong tiêu đề phần BREAKPOINTS và nhập tên chức năng. Điểm ngắt chức năng được hiển thị bằng hình tam giác màu đỏ trong phần ĐIỂM ĐỘT PHÁ

Điểm ngắt dữ liệu

Nếu trình gỡ lỗi hỗ trợ các điểm ngắt dữ liệu, thì chúng có thể được đặt từ menu ngữ cảnh trong dạng xem BIẾN. Các lệnh Break on Value Change/Read/Access sẽ thêm một điểm dừng dữ liệu được nhấn khi giá trị của biến cơ bản thay đổi/được đọc/được truy cập. Điểm ngắt dữ liệu được hiển thị bằng hình lục giác màu đỏ trong phần ĐIỂM ĐỘT PHÁ

Bảng điều khiển gỡ lỗi REPL

Các biểu thức có thể được đánh giá bằng tính năng REPL (Vòng đọc-Đánh giá-In) của Bảng điều khiển gỡ lỗi. Để mở Bảng điều khiển gỡ lỗi, hãy sử dụng hành động Bảng điều khiển gỡ lỗi ở đầu ngăn Gỡ lỗi hoặc sử dụng Chế độ xem. Lệnh Bảng điều khiển gỡ lỗi ( ⇧⌘Y (Windows, Linux Ctrl+Shift+Y)). Expressions are evaluated after you press Enter và Bảng điều khiển gỡ lỗi REPL hiển thị các đề xuất khi bạn nhập. Nếu bạn cần nhập nhiều dòng, hãy sử dụng Shift+Enter giữa các dòng rồi gửi tất cả các dòng để đánh giá bằng . Đầu vào của Bảng điều khiển gỡ lỗi sử dụng chế độ của trình soạn thảo đang hoạt động, có nghĩa là đầu vào của Bảng điều khiển gỡ lỗi hỗ trợ tô màu cú pháp, thụt lề, tự động đóng dấu ngoặc kép và các tính năng ngôn ngữ khác. . Debug Console input uses the mode of the active editor, which means that the Debug Console input supports syntax coloring, indentation, auto closing of quotes, and other language features.

Đối số tùy chọn trong php

Ghi chú. Bạn phải ở trong phiên gỡ lỗi đang chạy để sử dụng Bảng điều khiển gỡ lỗi REPL

Chuyển hướng đầu vào/đầu ra đến/từ mục tiêu gỡ lỗi

Chuyển hướng đầu vào/đầu ra là dành riêng cho trình gỡ lỗi/thời gian chạy, vì vậy Mã VS không có giải pháp tích hợp phù hợp với tất cả các trình gỡ lỗi

Đây là hai cách tiếp cận bạn có thể muốn xem xét

  1. Khởi chạy chương trình để gỡ lỗi ("mục tiêu gỡ lỗi") theo cách thủ công trong thiết bị đầu cuối hoặc dấu nhắc lệnh và chuyển hướng đầu vào/đầu ra khi cần. Đảm bảo chuyển các tùy chọn dòng lệnh thích hợp cho mục tiêu gỡ lỗi để trình gỡ lỗi có thể đính kèm vào đó. Tạo và chạy cấu hình gỡ lỗi "đính kèm" gắn vào mục tiêu gỡ lỗi

  2. If the debugger extension you are using can run the debug target in VS Code's Integrated Terminal (or an external terminal), you can try to pass the shell redirect syntax (for example, "<" or ">") as arguments.

Đây là một ví dụ về cấu hình

{
  "type": "node",
  "request": "launch",
  "name": "Launch Program",
  "program": "${workspaceFolder}/app.js",
  "cwd": "${workspaceFolder}",
  "args": ["${env:USERNAME}"]
}
1

{
  "name": "launch program that reads a file from stdin",
  "type": "node",
  "request": "launch",
  "program": "program.js",
  "console": "integratedTerminal",
  "args": ["<", "in.txt"]
}

Cách tiếp cận này yêu cầu cú pháp "<" được chuyển qua tiện ích mở rộng trình gỡ lỗi và không bị sửa đổi trong Thiết bị đầu cuối tích hợp

Gỡ lỗi đa mục tiêu

Đối với các tình huống phức tạp liên quan đến nhiều quy trình (ví dụ: máy khách và máy chủ), Mã VS hỗ trợ gỡ lỗi đa mục tiêu

Sử dụng gỡ lỗi đa mục tiêu rất đơn giản. sau khi bạn bắt đầu phiên gỡ lỗi đầu tiên, bạn có thể khởi chạy một phiên khác. Ngay khi phiên thứ hai bắt đầu và chạy, VS Code UI chuyển sang chế độ đa mục tiêu

  • Các phiên riêng lẻ hiện hiển thị dưới dạng các thành phần cấp cao nhất trong chế độ xem CALL STACK
    Đối số tùy chọn trong php
  • Thanh công cụ gỡ lỗi hiển thị phiên hiện đang hoạt động (và tất cả các phiên khác có sẵn trong menu thả xuống)
    Đối số tùy chọn trong php
  • Các hành động gỡ lỗi (ví dụ: tất cả các hành động trong thanh công cụ gỡ lỗi) được thực hiện trên phiên hoạt động. Phiên hoạt động có thể được thay đổi bằng cách sử dụng menu thả xuống trong thanh công cụ gỡ lỗi hoặc bằng cách chọn một thành phần khác trong chế độ xem CALL STACK

Cấu hình khởi chạy hợp chất

Một cách khác để bắt đầu nhiều phiên gỡ lỗi là sử dụng cấu hình khởi chạy phức hợp. Cấu hình khởi chạy hỗn hợp liệt kê tên của hai hoặc nhiều cấu hình khởi chạy sẽ được khởi chạy song song. Tùy chọn có thể chỉ định một

"launch": {
    "version": "0.2.0",
    "configurations": [{
        "type": "node",
        "request": "launch",
        "name": "Launch Program",
        "program": "${file}"
    }]
}
3 được chạy trước khi bắt đầu các phiên gỡ lỗi riêng lẻ. Cờ boolean
{
  "type": "node",
  "request": "launch",
  "name": "Launch Program",
  "program": "${workspaceFolder}/app.js",

  "serverReadyAction": {
    "pattern": "listening on port ([0-9]+)",
    "uriFormat": "http://localhost:%s",
    "action": "openExternally"
  }
}
1 kiểm soát việc chấm dứt thủ công một phiên có dừng tất cả các phiên ghép hay không

{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "node",
      "request": "launch",
      "name": "Server",
      "program": "${workspaceFolder}/server.js"
    },
    {
      "type": "node",
      "request": "launch",
      "name": "Client",
      "program": "${workspaceFolder}/client.js"
    }
  ],
  "compounds": [
    {
      "name": "Server/Client",
      "configurations": ["Server", "Client"],
      "preLaunchTask": "${defaultBuildTask}",
      "stopAll": true
    }
  ]
}

Cấu hình khởi chạy hợp chất được hiển thị trong menu thả xuống cấu hình khởi chạy

gỡ lỗi từ xa

Bản thân Mã VS không hỗ trợ gỡ lỗi từ xa. đây là một tính năng của tiện ích mở rộng gỡ lỗi mà bạn đang sử dụng và bạn nên tham khảo trang của tiện ích mở rộng trong Thị trường để được hỗ trợ và biết chi tiết

Tuy nhiên, có một ngoại lệ. nút. trình gỡ lỗi js có trong Mã VS hỗ trợ gỡ lỗi từ xa. Xem chủ đề để tìm hiểu làm thế nào để cấu hình này

Tự động mở URI khi gỡ lỗi chương trình máy chủ

Việc phát triển một chương trình web thường yêu cầu mở một URL cụ thể trong trình duyệt web để truy cập mã máy chủ trong trình gỡ lỗi. VS Code có sẵn tính năng "serverReadyAction" để tự động hóa tác vụ này

Đây là một ví dụ về một nút đơn giản. ứng dụng js Express

var express = require('express');
var app = express();

app.get('/', function(req, res) {
  res.send('Hello World!');
});

app.listen(3000, function() {
  console.log('Example app listening on port 3000!');
});

Trước tiên, ứng dụng này sẽ cài đặt trình xử lý "Xin chào thế giới" cho URL "/" và sau đó bắt đầu lắng nghe các kết nối HTTP trên cổng 3000. Cổng được công bố trong Bảng điều khiển gỡ lỗi và thông thường, nhà phát triển hiện sẽ nhập

{
  "type": "node",
  "request": "launch",
  "name": "Launch Program",
  "program": "${workspaceFolder}/app.js",

  "serverReadyAction": {
    "pattern": "listening on port ([0-9]+)",
    "uriFormat": "http://localhost:%s",
    "action": "openExternally"
  }
}
2 vào ứng dụng trình duyệt của họ

Tính năng serverReadyAction cho phép thêm thuộc tính có cấu trúc

{
  "name": "launch program that reads a file from stdin",
  "type": "node",
  "request": "launch",
  "program": "program.js",
  "console": "integratedTerminal",
  "args": ["<", "in.txt"]
}
0 vào bất kỳ cấu hình khởi chạy nào và chọn một "hành động" sẽ được thực hiện

{
  "type": "node",
  "request": "launch",
  "name": "Launch Program",
  "program": "${workspaceFolder}/app.js",

  "serverReadyAction": {
    "pattern": "listening on port ([0-9]+)",
    "uriFormat": "http://localhost:%s",
    "action": "openExternally"
  }
}

Ở đây, thuộc tính

{
  "type": "node",
  "request": "launch",
  "name": "Launch Program",
  "program": "${workspaceFolder}/app.js",

  "serverReadyAction": {
    "pattern": "listening on port ([0-9]+)",
    "uriFormat": "http://localhost:%s",
    "action": "openExternally"
  }
}
4 mô tả biểu thức chính quy để khớp với chuỗi đầu ra của chương trình thông báo cổng. Mẫu cho số cổng được đặt trong dấu ngoặc đơn để nó có sẵn dưới dạng nhóm chụp biểu thức chính quy. Trong ví dụ này, chúng tôi chỉ trích xuất số cổng, nhưng cũng có thể trích xuất toàn bộ URI

Thuộc tính

{
  "type": "node",
  "request": "launch",
  "name": "Launch Program",
  "program": "${workspaceFolder}/app.js",

  "serverReadyAction": {
    "pattern": "listening on port ([0-9]+)",
    "uriFormat": "http://localhost:%s",
    "action": "openExternally"
  }
}
5 mô tả cách chuyển số cổng thành URI.
{
  "type": "node",
  "request": "launch",
  "name": "Launch Program",
  "program": "${workspaceFolder}/app.js",

  "serverReadyAction": {
    "pattern": "listening on port ([0-9]+)",
    "uriFormat": "http://localhost:%s",
    "action": "openExternally"
  }
}
6 đầu tiên được thay thế bằng nhóm chụp đầu tiên của mẫu phù hợp

URI kết quả sau đó được mở bên ngoài Mã VS ("bên ngoài") với ứng dụng tiêu chuẩn được định cấu hình cho lược đồ của URI

Gỡ lỗi kích hoạt qua Edge hoặc Chrome

Ngoài ra, có thể đặt

{
  "type": "node",
  "request": "launch",
  "name": "Launch Program",
  "program": "${workspaceFolder}/app.js",

  "serverReadyAction": {
    "pattern": "listening on port ([0-9]+)",
    "uriFormat": "http://localhost:%s",
    "action": "openExternally"
  }
}
7 thành
{
  "type": "node",
  "request": "launch",
  "name": "Launch Program",
  "program": "${workspaceFolder}/app.js",

  "serverReadyAction": {
    "pattern": "listening on port ([0-9]+)",
    "uriFormat": "http://localhost:%s",
    "action": "openExternally"
  }
}
8 hoặc
{
  "type": "node",
  "request": "launch",
  "name": "Launch Program",
  "program": "${workspaceFolder}/app.js",

  "serverReadyAction": {
    "pattern": "listening on port ([0-9]+)",
    "uriFormat": "http://localhost:%s",
    "action": "openExternally"
  }
}
9. Ở chế độ này, có thể thêm thuộc tính Debuggers0 được chuyển đến phiên gỡ lỗi của Chrome hoặc Edge

Để đơn giản hóa mọi thứ một chút, hầu hết các thuộc tính là tùy chọn và chúng tôi sử dụng các giá trị dự phòng sau

  • mẫu. Debuggers1 phù hợp với các thông báo thường được sử dụng "đang nghe trên cổng 3000" hoặc "Hiện đang nghe trên. https. //máy chủ cục bộ. 5001"
  • uriFormat. Debuggers2
  • webRoot. Debuggers3

Kích hoạt cấu hình khởi chạy tùy ý

Trong một số trường hợp, bạn có thể cần định cấu hình các tùy chọn bổ sung cho phiên gỡ lỗi của trình duyệt--hoặc sử dụng hoàn toàn một trình gỡ lỗi khác. Bạn có thể thực hiện việc này bằng cách đặt

{
  "type": "node",
  "request": "launch",
  "name": "Launch Program",
  "program": "${workspaceFolder}/app.js",

  "serverReadyAction": {
    "pattern": "listening on port ([0-9]+)",
    "uriFormat": "http://localhost:%s",
    "action": "openExternally"
  }
}
7 thành Debuggers5 với thuộc tính
{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "node",
      "request": "launch",
      "name": "Launch Program",
      "program": "${workspaceFolder}/node_modules/gulp/bin/gulpfile.js",
      "stopOnEntry": true,
      "osx": {
        "stopOnEntry": false
      }
    }
  ]
}
7 được đặt thành tên của cấu hình khởi chạy để bắt đầu khi khớp với ______77_______4

Cấu hình khởi chạy được đặt tên phải nằm trong cùng một tệp hoặc thư mục với cấu hình có tên là

{
  "name": "launch program that reads a file from stdin",
  "type": "node",
  "request": "launch",
  "program": "program.js",
  "console": "integratedTerminal",
  "args": ["<", "in.txt"]
}
0

Đây là tính năng serverReadyAction đang hoạt động

Đối số tùy chọn trong php

Bước tiếp theo

Để tìm hiểu về VS Code's Node. hỗ trợ gỡ lỗi js, hãy xem

  • Nút. js - Mô tả Nút. js, được bao gồm trong Mã VS
  • TypeScript - Nút. trình gỡ lỗi js cũng hỗ trợ gỡ lỗi TypeScript

Để xem hướng dẫn về những điều cơ bản của Node. js, hãy xem các video này

  • Video giới thiệu - Gỡ lỗi - Giới thiệu những điều cơ bản về gỡ lỗi
  • Bắt đầu với Nút. js gỡ lỗi - Hiển thị cách đính kèm trình gỡ lỗi vào Nút đang chạy. quy trình js

Để tìm hiểu về hỗ trợ gỡ lỗi cho các ngôn ngữ lập trình khác thông qua tiện ích mở rộng Mã VS

  • C++
  • con trăn
  • Java

Để tìm hiểu về hỗ trợ chạy tác vụ của VS Code, hãy truy cập

  • Nhiệm vụ - Mô tả cách chạy các nhiệm vụ với Gulp, Grunt và Jake cũng như cách hiển thị lỗi và cảnh báo

Để viết tiện ích mở rộng trình gỡ lỗi của riêng bạn, hãy truy cập

  • Tiện ích mở rộng trình gỡ lỗi - Sử dụng mẫu giả để minh họa các bước cần thiết để tạo tiện ích mở rộng gỡ lỗi Mã VS

Câu hỏi thường gặp

Các tình huống gỡ lỗi được hỗ trợ là gì?

Gỡ lỗi nút. các ứng dụng dựa trên js được hỗ trợ trên Linux, macOS và Windows ngay lập tức với Mã VS. Nhiều tình huống khác được hỗ trợ bởi các tiện ích mở rộng Mã VS có sẵn trên Thị trường

Tôi không thấy bất kỳ cấu hình khởi chạy nào trong danh sách thả xuống của chế độ xem Chạy và Gỡ lỗi. Chuyện gì thế?

Vấn đề phổ biến nhất là bạn đã không thiết lập

{
  "type": "node",
  "request": "launch",
  "name": "Launch Program",
  "program": "${workspaceFolder}/app.js",
  "cwd": "${workspaceFolder}",
  "args": ["${env:USERNAME}"]
}
1 hoặc có lỗi cú pháp trong tệp đó. Ngoài ra, bạn có thể cần mở một thư mục vì tính năng gỡ lỗi không có thư mục không hỗ trợ cấu hình khởi chạy