Hướng dẫn debug nodejs vscode - gỡ lỗi nodejs vscode
Show
Đã đăng vào thg 12 8, 2021 3:30 SA 3 phút đọc 3 phút đọc Debug nodejs app với Visual Studio CodeTrong bài viết này mình sẽ hướng dẫn debug nodejs app với framework ExpressJS. Đối với các framework, ngôn ngữ khác các bạn có thể tìm hiểu và config tương tự 1. Chuẩn bị môi trườnga. Express app
b. Thêm cấu hình debug
2. Thực hiện debuga. Chọn breakpoint
b. Thực hiện debug
Các thao tác debug khác như 5, hay như các config khác các bạn có thể tham khảo thêm trên document của visual code tại đây!All rights reserved Node.js gỡ lỗi trong mã vsTrình chỉnh sửa mã Visual Studio đã hỗ trợ gỡ lỗi tích hợp cho thời gian chạy Node.js và có thể gỡ lỗi JavaScript, TypeScript và nhiều ngôn ngữ khác được truyền vào JavaScript. Thiết lập một dự án để gỡ lỗi Node.js rất đơn giản với mã VS cung cấp các mặc định và đoạn trích cấu hình khởi chạy phù hợp. Có một vài cách bạn có thể gỡ lỗi các chương trình Node.js trong mã vs:
Đính kèm tự độngNếu tính năng Auto đính kèm được bật, trình gỡ lỗi nút sẽ tự động gắn vào các quy trình nhất định của Node.js đã được khởi chạy từ thiết bị đầu cuối tích hợp của mã vs. Để bật tính năng, sử dụng lệnh Toggle Auto đính kèm từ bảng lệnh (⇧⌘P (Windows, Linux Ctrl+Shift+P)) hoặc, nếu nó đã được kích hoạt, hãy sử dụng mục thanh trạng thái Auto đính kèm.Auto Attach feature is enabled, the Node debugger automatically attaches to certain Node.js processes that have been launched from VS Code's Integrated Terminal. To enable the feature, either use the Toggle Auto Attach command from the Command Palette (⇧⌘P (Windows, Linux Ctrl+Shift+P)) or, if it's already activated, use the Auto Attach Status bar item. Có ba chế độ cho Auto đính kèm, bạn có thể chọn trong Pick Pick nhanh chóng và thông qua cài đặt Debug.JavaScript.Autoattachfilter:debug.javascript.autoAttachFilter setting:
Sau khi bật Auto đính kèm, bạn sẽ cần khởi động lại thiết bị đầu cuối của mình. Điều này có thể được thực hiện bằng cách nhấp vào biểu tượng ⚠ ở phía trên bên phải của thiết bị đầu cuối hoặc chỉ tạo một biểu tượng mới. Sau đó, trình gỡ lỗi nên gắn vào chương trình của bạn trong vòng một giây:Auto Attach, you'll need to restart your terminal. This can be done by clicking the ⚠ icon in the top right of the terminal, or just creating a new one. Then, the debugger should attach to your program within a second: Khi Auto đính kèm được bật, mục 3 sẽ xuất hiện trong thanh trạng thái bên dưới cùng của cửa sổ mã VS. Nhấp vào nó cho phép bạn thay đổi chế độ đính kèm tự động hoặc tạm thời tắt nó. Tạm thời tắt Auto đính kèm rất hữu ích nếu bạn đang chạy một số chương trình một lần mà bạn không cần gỡ lỗi, nhưng bạn không muốn vô hiệu hóa hoàn toàn tính năng.Cấu hình bổ sungCác thuộc tính cấu hình khởi chạy khác Bạn có thể áp dụng các thuộc tính khác thường được tìm thấy trong Launch.json để tự động đính kèm trong cài đặt DEBUG.JAVASCRIPT.TerminalOptions. Ví dụ: để thêm nút nội bộ vào SkipFiles của bạn, bạn có thể thêm phần sau vào cài đặt người dùng hoặc không gian làm việc của mình:debug.javascript.terminalOptions setting. For example, to add node internals to your skipFiles, you could add the following to your user or workspace settings:
Tự động đính kèm các mẫu thông minh Trong chế độ 6 Auto đính kèm, mã VS sẽ cố gắng đính kèm vào mã của bạn và không đính kèm với các công cụ xây dựng mà bạn không quan tâm đến việc gỡ lỗi. Nó thực hiện điều này bằng cách kết hợp tập lệnh chính với một danh sách các mẫu GLOB. Các mẫu GLOB có thể định cấu hình trong cài đặt Debug.JavaScript.AutoattachSmartPotype, mặc định là:debug.javascript.autoAttachSmartPattern setting, which defaults to:
5 được thay thế bằng một danh sách các 'người chạy mã' phổ biến như 6, 7, 8, v.v. Bạn có thể sửa đổi danh sách này nếu các cài đặt này không hoạt động. Ví dụ: để loại trừ 7 và bao gồm 0, bạn có thể thêm hai dòng:
Thiết bị đầu cuối gỡ lỗi JavaScriptTheo cách tương tự với Auto đính kèm, thiết bị đầu cuối gỡ lỗi JavaScript sẽ tự động gỡ lỗi bất kỳ quy trình Node.js nào bạn chạy trong đó. Bạn có thể tạo một thiết bị đầu cuối gỡ lỗi bằng cách chạy gỡ lỗi: Tạo lệnh thiết bị đầu cuối gỡ lỗi JavaScript từ bảng lệnh ( 1) hoặc bằng cách chọn thiết bị đầu cuối gỡ lỗi JavaScript từ thả xuống trình chuyển đổi thiết bị đầu cuối.Debug: Create JavaScript Debug Terminal command from the Command Palette ( 1), or by selecting the Create JavaScript Debug Terminal from the terminal switcher dropdown.Cấu hình bổ sungCác thuộc tính cấu hình khởi chạy khác Bạn có thể áp dụng các thuộc tính khác thường được tìm thấy trong Launch.json cho thiết bị đầu cuối gỡ lỗi trong cài đặt Debug.JavaScript.TerminalOptions. Ví dụ: để thêm nút nội bộ vào SkipFiles của bạn, bạn có thể thêm phần sau vào cài đặt người dùng hoặc không gian làm việc của mình:debug.javascript.terminalOptions setting. For example, to add node internals to your skipFiles, you could add the following to your user or workspace settings:
Khởi chạy cấu hìnhCác cấu hình khởi chạy là cách truyền thống để thiết lập gỡ lỗi trong mã VS và cung cấp cho bạn các tùy chọn cấu hình nhất để chạy các ứng dụng phức tạp. Trong phần này, chúng tôi sẽ đi sâu vào chi tiết hơn về các cấu hình và tính năng cho các kịch bản gỡ lỗi nâng cao hơn. Bạn sẽ tìm thấy hướng dẫn gỡ lỗi với bản đồ nguồn, bước qua mã bên ngoài, gỡ lỗi từ xa và nhiều hơn nữa. Nếu bạn muốn xem một video giới thiệu, hãy xem bắt đầu với gỡ lỗi Node.js.
Khởi chạy các thuộc tính cấu hìnhCác cấu hình gỡ lỗi được lưu trữ trong tệp 1 nằm trong thư mục 4 của không gian làm việc của bạn. Giới thiệu về việc tạo và sử dụng các tệp cấu hình gỡ lỗi nằm trong bài viết gỡ lỗi chung.Dưới đây là một tham chiếu của các thuộc tính 1 phổ biến cụ thể cho Trình gỡ lỗi Node.js. Bạn có thể xem tập hợp hoàn chỉnh các tùy chọn trong tài liệu Tùy chọn VSCode-JS-Debug.Các thuộc tính sau được hỗ trợ trong các cấu hình khởi chạy loại 6 và 7:
Các thuộc tính này chỉ có sẵn cho các cấu hình khởi chạy của loại yêu cầu 6:
Thuộc tính này chỉ có sẵn cho các cấu hình khởi chạy của loại yêu cầu 7:
Khởi chạy cấu hình cho các tình huống phổ biếnBạn có thể kích hoạt IntelliSense (⌃Space (Windows, Linux Ctrl+Space)) trong tệp 1 của bạn để xem các đoạn cấu hình khởi chạy cho các kịch bản gỡ lỗi nút thường được sử dụng.⌃Space (Windows, Linux Ctrl+Space)) in your 1 file to see launch configuration snippets for commonly used
Node.js debugging scenarios.Bạn cũng có thể hiển thị các đoạn trích với nút Thêm cấu hình ... ở phía dưới bên phải của cửa sổ Trình chỉnh sửa 1.Add Configuration... button in the lower right of the 1 editor window.
Đây là những đoạn trích có sẵn:
Bảng điều khiển nútTheo mặc định, các phiên gỡ lỗi Node.js sẽ khởi chạy mục tiêu trong bảng điều khiển gỡ lỗi nội bộ so với mã. Vì bảng điều khiển gỡ lỗi không hỗ trợ các chương trình cần đọc đầu vào từ bảng điều khiển, bạn có thể bật thiết bị đầu cuối bên ngoài hoặc sử dụng thiết bị đầu cuối tích hợp mã VS bằng cách đặt thuộc tính ____77 trong cấu hình khởi chạy của bạn thành 0 hoặc 9. Mặc định là 8.Nếu một thiết bị đầu cuối bên ngoài được sử dụng, bạn có thể định cấu hình chương trình thiết bị đầu cuối nào sẽ sử dụng thông qua cài đặt 08, 09 và 10.Khởi chạy Hỗ trợ cấu hình cho 'NPM' và các công cụ khácThay vì khởi chạy chương trình Node.js trực tiếp với Node, bạn có thể sử dụng các tập lệnh 'NPM' hoặc các công cụ Runner tác vụ khác trực tiếp từ cấu hình khởi chạy:
Hãy xem xét một ví dụ 'NPM'. Ví dụ: nếu 14 của bạn có tập lệnh 'gỡ lỗi', ví dụ:
Cấu hình khởi chạy tương ứng sẽ trông như thế này:
Hỗ trợ nhiều phiên bảnNếu bạn đang sử dụng 'NVM' (hoặc 'NVM-Windows') để quản lý các phiên bản Node.js của bạn, có thể chỉ định thuộc tính 4 trong cấu hình khởi chạy để chọn phiên bản cụ thể của Node.js:
Nếu bạn đang sử dụng 'NVS' để quản lý các phiên bản Node.js của mình, có thể sử dụng thuộc tính 4 để chọn một phiên bản cụ thể, kiến trúc và hương vị Node.js, ví dụ: 0Đảm bảo cài đặt các phiên bản Node.js đó mà bạn muốn sử dụng với thuộc tính 4, vì tính năng sẽ không tải xuống và cài đặt phiên bản tự động. Ví dụ: bạn sẽ phải chạy một cái gì đó như 18 hoặc 19 từ thiết bị đầu cuối tích hợp nếu bạn có kế hoạch thêm 20 vào cấu hình khởi chạy của bạn.Nếu bạn bỏ qua phiên bản nhỏ và bản vá và có, ví dụ, 21, thì phiên bản 22 gần đây nhất được cài đặt trên hệ thống của bạn sẽ được sử dụng.Tải các biến môi trường từ tệp bên ngoàiTrình gỡ lỗi nút VS hỗ trợ các biến môi trường tải từ một tệp và chuyển chúng đến thời gian chạy Node.js. Để sử dụng tính năng này, hãy thêm thuộc tính 6 vào cấu hình khởi chạy của bạn và chỉ định đường dẫn tuyệt đối vào tệp chứa các biến môi trường: 1Bất kỳ biến môi trường nào được chỉ định trong từ điển 5 sẽ ghi đè các biến được tải từ tệp.Dưới đây là một ví dụ về tệp 25: 2Gắn vào Node.jsNếu bạn muốn đính kèm Trình gỡ lỗi mã VS vào chương trình Node.js bên ngoài, hãy khởi chạy Node.js như sau: 3Hoặc nếu chương trình không nên bắt đầu chạy, nhưng phải chờ trình gỡ lỗi đính kèm: 4Bây giờ bạn có một vài tùy chọn để gắn trình gỡ lỗi vào chương trình của mình:
Hãy xem qua các tùy chọn này một cách chi tiết: Đính kèm với hành động quy trình nútLệnh đính kèm vào nút Node Process từ bảng lệnh (⇧⌘P (Windows, Linux Ctrl+Shift+P)) mở menu chọn nhanh liệt kê tất cả các quy trình tiềm năng có sẵn cho trình gỡ lỗi Node.js:Attach to Node Process command from the Command Palette (⇧⌘P (Windows, Linux Ctrl+Shift+P)) opens a Quick Pick menu that lists all potential processes that are available to the Node.js debugger: Các quy trình riêng lẻ được liệt kê trong trình chọn hiển thị cổng gỡ lỗi và ID quy trình. Khi bạn chọn quy trình Node.js của mình trong danh sách đó, trình gỡ lỗi Node.js sẽ cố gắng đính kèm với nó. Ngoài các quy trình của Node.js, trình chọn cũng hiển thị các chương trình khác được đưa ra với một trong các dạng đối số 1 khác nhau. Điều này cho phép gắn vào các quy trình trợ giúp của mã của Electron hoặc VS.Thiết lập cấu hình "Đính kèm"Tùy chọn này đòi hỏi nhiều công việc hơn nhưng trái ngược với hai tùy chọn trước đó, nó cho phép bạn định cấu hình các tùy chọn cấu hình gỡ lỗi khác nhau một cách rõ ràng. Cấu hình "đính kèm" đơn giản nhất trông như thế này: 5Cổng 27 là cổng gỡ lỗi mặc định của các tùy chọn 1 và 2. Để sử dụng một cổng khác (ví dụ 30), hãy thêm nó vào các tùy chọn như sau: 31 và 32 và thay đổi thuộc tính 6 trong cấu hình khởi chạy để khớp.Nếu bạn muốn đính kèm vào quy trình Node.js chưa được bắt đầu ở chế độ gỡ lỗi, bạn có thể thực hiện điều này bằng cách chỉ định ID quy trình của quy trình Node.js dưới dạng chuỗi: 6Vì có một chút tốn nhiều công sức khi liên tục tìm ID quy trình và nhập nó vào cấu hình khởi chạy, Node Debug hỗ trợ biến lệnh 34 sẽ mở trình chọn quy trình (từ phía trên).Sử dụng biến 34 Cấu hình khởi chạy trông như thế này: 7Ngừng gỡ lỗiSử dụng Debug: Stop Action (có sẵn trong thanh công cụ gỡ lỗi hoặc thông qua bảng lệnh) dừng phiên gỡ lỗi.Debug: Stop action (available in the Debug toolbar or via the Command Palette) stops the debug session. Nếu phiên gỡ lỗi được bắt đầu ở chế độ "đính kèm" (và nút chấm dứt màu đỏ trong thanh công cụ gỡ lỗi hiển thị "phích cắm" được đặt chồng lên nhau), hãy nhấn dừng sẽ ngắt kết nối trình gỡ lỗi Node.js từ trình gỡ lỗi sau đó tiếp tục thực thi.Stop disconnects the Node.js debugger from the debuggee that then continues execution. Nếu phiên gỡ lỗi ở chế độ "Khởi chạy", hãy nhấn Stop như sau:Stop does the following:
Vì vậy, nếu bạn thấy rằng một phiên gỡ lỗi không kết thúc khi bạn nhấn nút Dừng màu đỏ, thì hãy nhấn nút một lần nữa để buộc tắt máy gỡ lỗi.Stop button, then press the button again to force a shutdown of the debuggee. Lưu ý rằng trên hệ điều hành Windows, nhấn dừng luôn luôn giết chết các quy trình gỡ lỗi và con của nó.Stop always forcibly kills the debuggee and its child processes. Bản đồ nguồnTrình gỡ lỗi JavaScript của mã VS hỗ trợ các bản đồ nguồn giúp gỡ lỗi các ngôn ngữ được chuyển đổi, ví dụ, JavaScript hoặc Minified/Uglified. Với bản đồ nguồn, có thể một bước đơn qua hoặc đặt các điểm dừng trong nguồn gốc. Nếu không có bản đồ nguồn nào tồn tại cho nguồn gốc hoặc nếu bản đồ nguồn bị phá vỡ và không thể lập bản đồ thành công giữa nguồn và JavaScript được tạo, thì các điểm dừng hiển thị dưới dạng chưa được xác minh (vòng tròn rỗng màu xám). Tính năng bản đồ nguồn được điều khiển bởi thuộc tính 38 mặc định là 39. Điều này có nghĩa là trình gỡ lỗi luôn cố gắng sử dụng bản đồ nguồn (nếu nó có thể tìm thấy bất kỳ) và do đó, bạn thậm chí có thể chỉ định một tệp nguồn (ví dụ: app.ts) với thuộc tính 8. Nếu bạn cần vô hiệu hóa bản đồ nguồn vì một số lý do, bạn có thể đặt thuộc tính 38 thành 42.Cấu hình công cụVì bản đồ nguồn không phải lúc nào cũng tự động được tạo, bạn nên đảm bảo định cấu hình bộ chuyển đổi của mình để tạo chúng. Ví dụ: TYPEXTRIPT Đối với TypeScript, bạn có thể bật SourCemaps bằng cách chuyển 43 đến 44 hoặc bằng cách thêm 45 trong tệp tsconfig.json của bạn. 8Babel Đối với Babel, bạn sẽ muốn đặt tùy chọn SourCemaps thành 39 hoặc chuyển tùy chọn 47 khi biên dịch mã của bạn. 9Trang web Webpack có nhiều tùy chọn bản đồ nguồn. Chúng tôi khuyên bạn nên đặt tài sản 48 trong 49 của bạn để biết độ trung thực tốt nhất về kết quả, mặc dù bạn có thể thử nghiệm các cài đặt khác gây ra sự chậm lại trong bản dựng của bạn.Ngoài ra, nếu bạn có các bước biên dịch bổ sung trong trang web, chẳng hạn như sử dụng Trình tải TypeScript, bạn cũng sẽ muốn đảm bảo rằng các bước đó được thiết lập để tạo SourCemaps. Mặt khác, các bản đồ mà webpack tạo sẽ ánh xạ trở lại mã được biên dịch từ trình tải, thay vì các nguồn thực. Khám phá bản đồ nguồnTheo mặc định, mã VS sẽ tìm kiếm toàn bộ không gian làm việc của bạn, không bao gồm 7, cho SourCemaps. Trong không gian làm việc lớn, tìm kiếm này có thể chậm. Bạn có thể định cấu hình các vị trí nơi mã VS sẽ tìm kiếm bản đồ nguồn bằng cách đặt thuộc tính 8 trong 1 của bạn. Ví dụ: cấu hình này sẽ chỉ phát hiện ra SourCemaps cho các tệp 53 trong thư mục 54: 0Lưu ý rằng 8 sẽ khớp với các tệp JavaScript của bạn, chứ không phải các tệp bản đồ nguồn (có thể kết thúc trong 56 thay vì 53).Độ phân giải bản đồ nguồnTheo mặc định, chỉ các bản đồ nguồn trong 8 của bạn sẽ được giải quyết. Hành vi này được sử dụng để ngăn chặn các phụ thuộc can thiệp vào các điểm dừng bạn đặt. Ví dụ: nếu bạn có tệp 59 và phụ thuộc có bản đồ nguồn được tham chiếu 60, điều đó sẽ giải quyết không chính xác cho tệp nguồn của bạn và có thể dẫn đến kết quả đáng ngạc nhiên.Bạn có thể định cấu hình hành vi này bằng cách đặt tùy chọn 9. Nếu được đặt thành 62, mọi bản đồ nguồn sẽ được giải quyết. Ví dụ, cấu hình này cũng sẽ cho phép bản đồ nguồn trong 63 được giải quyết: 1Bước thông minhVới thuộc tính 4 được đặt thành 39 trong cấu hình khởi chạy, mã VS sẽ tự động bỏ qua 'mã không trung tâm' khi bước qua mã trong trình gỡ lỗi. 'Mã không thú vị' là mã được tạo bởi một quy trình transpiling nhưng không được bao phủ bởi bản đồ nguồn để nó không ánh xạ trở lại nguồn gốc. Mã này theo cách của bạn khi bước qua mã nguồn trong trình gỡ lỗi vì nó tạo công tắc trình gỡ lỗi giữa mã nguồn gốc và mã được tạo mà bạn không quan tâm. Một vị trí được bao phủ bởi một bản đồ nguồn một lần nữa.Bước thông minh đặc biệt hữu ích cho các trường hợp như Async/Await DownCompilation trong TypeScript, trong đó trình biên dịch tiêm mã trợ giúp không được bao phủ bởi bản đồ nguồn. Tính năng 4 chỉ áp dụng cho mã JavaScript được tạo từ nguồn và do đó có bản đồ nguồn. Đối với JavaScript không có nguồn, tùy chọn bước thông minh không có hiệu lực.Mẹo bản đồ nguồn JavaScriptMột vấn đề phổ biến khi gỡ lỗi với các bản đồ nguồn là bạn sẽ đặt điểm dừng và nó sẽ chuyển sang màu xám. Nếu bạn di chuyển con trỏ qua nó, bạn sẽ thấy tin nhắn, 68. Gì bây giờ? Có một loạt các vấn đề có thể dẫn đến điều này. Đầu tiên, một lời giải thích nhanh về cách bộ điều hợp gỡ lỗi nút xử lý các bản đồ nguồn.Khi bạn đặt điểm dừng trong 69, bộ điều hợp gỡ lỗi phải tìm ra đường dẫn đến 70, phiên bản được truyền của tệp TypeScript của bạn, đó là những gì thực sự đang chạy trong nút. Nhưng, không có cách nào đơn giản để tìm ra điều này bắt đầu từ tệp 71. Thay vào đó, bộ điều hợp gỡ lỗi sử dụng thuộc tính 8 trong 1 để tìm tất cả các tệp 53 đã được truyền và phân tích chúng cho một bản đồ nguồn, chứa các vị trí của các tệp 71 được liên kết của nó.Khi bạn xây dựng tệp 69 của mình trong TypeScript với các bản đồ nguồn được bật, nó sẽ tạo ra một tệp 77 hoặc bản đồ nguồn được ghi lại dưới dạng chuỗi được mã hóa cơ sở64 trong nhận xét ở dưới cùng của tệp 70. Để tìm các tệp 71 được liên kết với bản đồ này, bộ điều hợp gỡ lỗi xem xét hai thuộc tính trong bản đồ nguồn, 80 và 81. 81 là tùy chọn - nếu có, nó được chuẩn bị cho mỗi đường dẫn trong 80, đây là một loạt các đường dẫn. Kết quả là một mảng các đường dẫn tuyệt đối hoặc tương đối đến các tệp 71. Các đường dẫn tương đối được giải quyết liên quan đến bản đồ nguồn.Cuối cùng, bộ điều hợp gỡ lỗi tìm kiếm đường dẫn đầy đủ của 69 trong danh sách kết quả này của các tệp 71. Nếu có một trận đấu, nó đã tìm thấy tệp bản đồ nguồn để sử dụng khi ánh xạ 69 đến 70. Nếu không có khớp, thì nó không thể liên kết điểm dừng và nó sẽ chuyển sang màu xám.Dưới đây là một số điều cần thử khi điểm dừng của bạn chuyển sang màu xám:
Gỡ lỗi từ xa
Nếu bạn không thể sử dụng bất kỳ tiện ích mở rộng phát triển từ xa nào để gỡ lỗi chương trình Node.js của bạn, bên dưới là hướng dẫn về cách gỡ lỗi chương trình Node.js từ xa từ phiên bản VS của bạn. Trình gỡ lỗi Node.js hỗ trợ gỡ lỗi từ xa nơi bạn gắn vào một quy trình chạy trên một máy khác hoặc trong một thùng chứa. Chỉ định một máy chủ từ xa thông qua thuộc tính 7. Ví dụ: 2Theo mặc định, mã VS sẽ truyền phát nguồn được gỡ lỗi từ thư mục Node.js từ xa đến mã VS cục bộ và hiển thị nó trong trình chỉnh sửa chỉ đọc. Bạn có thể bước qua mã này, nhưng không thể sửa đổi nó. Nếu bạn muốn mã VS mở nguồn có thể chỉnh sửa từ không gian làm việc của mình, bạn có thể thiết lập ánh xạ giữa các vị trí từ xa và địa phương. Thuộc tính 2 và 3 có thể được sử dụng để ánh xạ các đường dẫn giữa dự án mã VS cục bộ và thư mục Node.js của Node.js. Điều này hoạt động ngay cả cục bộ trên cùng một hệ thống hoặc trên các hệ điều hành khác nhau. Bất cứ khi nào một đường dẫn mã cần được chuyển đổi từ thư mục Node.js từ xa sang đường dẫn mã VS cục bộ, đường dẫn 3 bị loại bỏ đường dẫn và được thay thế bằng 2. Đối với chuyển đổi ngược, đường dẫn 2 được thay thế bằng 3. 3Truy cập các tập lệnh được tảiNếu bạn cần đặt điểm dừng trong tập lệnh không phải là một phần của không gian làm việc của bạn và do đó không thể dễ dàng xác định và mở qua duyệt tệp mã vs thông thường, bạn có thể truy cập các tập lệnh được tải thông qua chế độ xem tập lệnh được tải trong chế độ xem chạy và gỡ lỗi:LOADED SCRIPTS view in the Run and Debug view: Chế độ xem tập lệnh được tải cho phép bạn nhanh chóng chọn tập lệnh bằng cách nhập tên của nó hoặc lọc danh sách khi bật bộ lọc trên loại.LOADED SCRIPTS view lets you quickly select the script by typing its name or filter the list when Enable Filter on Type is on. Các tập lệnh được tải vào một trình soạn thảo chỉ đọc nơi bạn có thể đặt các điểm dừng. Các điểm dừng này được ghi nhớ trong các phiên gỡ lỗi nhưng bạn chỉ có quyền truy cập vào nội dung tập lệnh trong khi phiên gỡ lỗi đang chạy. Khởi động lại các phiên gỡ lỗi tự động khi nguồn được chỉnh sửaThuộc tính 5 của cấu hình khởi chạy có kiểm soát xem bộ gỡ lỗi Node.js sẽ tự động khởi động lại sau khi phiên gỡ lỗi đã kết thúc hay không. Tính năng này rất hữu ích nếu bạn sử dụng Nodemon để khởi động lại Node.js trên các thay đổi tệp. Đặt thuộc tính cấu hình khởi chạy 5 thành 39 làm cho trình gỡ lỗi nút tự động cố gắng gắn lại đến Node.js sau khi Node.js chấm dứt.nodemon to restart Node.js on file changes. Setting the launch configuration attribute 5 to 39 makes the node debugger automatically try to reattach to Node.js after Node.js has terminated.Nếu bạn đã bắt đầu chương trình của mình 08 qua Nodemon trên dòng lệnh như sau:nodemon on the command line like this: 4Bạn có thể đính kèm Trình gỡ lỗi mã VS với cấu hình khởi chạy sau: 5Ngoài ra, bạn có thể bắt đầu chương trình của mình 08 qua Nodemon trực tiếp với cấu hình khởi chạy và đính kèm trình gỡ lỗi mã VS:nodemon directly with a launch config and attach the VS Code debugger: 6
Khởi động lại khungTrình gỡ lỗi nút hỗ trợ khởi động lại thực thi tại khung ngăn xếp. Điều này có thể hữu ích trong các tình huống mà bạn đã tìm thấy một vấn đề trong mã nguồn của mình và bạn muốn chạy lại một phần nhỏ của mã với các giá trị đầu vào đã sửa đổi. Dừng lại và sau đó khởi động lại phiên gỡ lỗi đầy đủ có thể tốn thời gian. Hành động khung khởi động lại cho phép bạn nhập lại chức năng hiện tại sau khi bạn đã thay đổi các biến với hành động giá trị đã đặt:Restart Frame action allows you to reenter the current function after you have changed variables with the Set Value action:
Khởi động lại khung sẽ không quay trở lại đột biến để trạng thái bên ngoài chức năng, vì vậy nó có thể không phải lúc nào cũng hoạt động như mong đợi. won't roll back mutation to state outside of the function, so it may not always work as expected. Điểm dừngĐiểm dừng có điều kiệnCác điểm dừng có điều kiện là các điểm dừng chỉ tạm dừng khi một biểu thức trả về giá trị sự thật. Bạn có thể tạo một bằng cách nhấp chuột phải vào máng xối bên cạnh số dòng và chọn "điểm dừng có điều kiện": Các điểm logpiĐôi khi bạn muốn chỉ đăng nhập một tin nhắn hoặc giá trị khi mã chạm vào một vị trí nhất định, thay vì tạm dừng. Bạn có thể làm điều này với các logpoints. Các điểm logpi không tạm dừng, mà là đăng nhập một thông báo vào bảng điều khiển gỡ lỗi khi bị truy cập. Trong trình gỡ lỗi JavaScript, bạn có thể sử dụng niềng răng xoăn để nội suy các biểu thức vào thông điệp, như 12.Bạn có thể tạo một bằng cách nhấp chuột phải vào máng xối bên cạnh số dòng và chọn "logpoint". Ví dụ: điều này có thể đăng nhập một cái gì đó như 13:Hit Bount BreakpointsĐiều kiện 'Điều kiện đếm trúng' kiểm soát số lần một điểm dừng cần phải được nhấn trước khi thực hiện 'phá vỡ'. Bạn có thể đặt điểm dừng đếm truy cập bằng cách nhấp chuột phải vào máng xối bên cạnh một số dòng, chọn "điểm dừng có điều kiện", sau đó chuyển sang "nhấn đếm". Cú pháp đếm trúng được hỗ trợ bởi Trình gỡ lỗi Node.js là một số nguyên hoặc một trong các toán tử 14, 15, 16, 17, 18, 19 theo sau là một số nguyên.Vài ví dụ:
Xác thực điểm dừngVì lý do hiệu suất, Node.js phân tích các chức năng bên trong các tệp JavaScript một cách uể oải trên quyền truy cập đầu tiên. Do đó, các điểm dừng không hoạt động trong các khu vực mã nguồn chưa được nhìn thấy (phân tích cú pháp) bởi Node.js. Vì hành vi này không lý tưởng để gỡ lỗi, mã VS sẽ tự động chuyển tùy chọn 25 cho Node.js. Điều này ngăn chặn phân tích cú pháp bị trì hoãn và đảm bảo rằng các điểm dừng có thể được xác thực trước khi chạy mã (để chúng không còn "nhảy").Vì tùy chọn 25 có thể tăng đáng kể thời gian khởi động của mục tiêu gỡ lỗi, bạn có thể dễ dàng từ chối bằng cách truyền một thuộc tính 27 dưới dạng 3.Khi làm như vậy, bạn sẽ thấy rằng một số điểm dừng của bạn không "gắn bó" vào dòng được yêu cầu mà thay vào đó "nhảy" cho dòng tiếp theo có thể trong mã đã bị lỗi. Để tránh nhầm lẫn, mã VS luôn hiển thị các điểm dừng tại vị trí nơi Node.js nghĩ rằng điểm dừng là. Trong phần Breakpoints, các điểm dừng này được hiển thị với một mũi tên giữa số dòng được yêu cầu và thực tế:BREAKPOINTS section, these breakpoints are shown with an arrow between requested and actual line number: Xác thực điểm dừng này xảy ra khi một phiên bắt đầu và các điểm dừng được đăng ký với Node.js hoặc khi một phiên đã chạy và một điểm dừng mới được đặt. Trong trường hợp này, điểm dừng có thể "nhảy" đến một vị trí khác. Sau khi Node.js đã phân tích tất cả các mã (ví dụ: bằng cách chạy qua nó), các điểm dừng có thể dễ dàng áp dụng lại cho các vị trí được yêu cầu bằng nút áp dụng lại trong tiêu đề phần Breakpoints. Điều này sẽ làm cho các điểm dừng "nhảy trở lại" đến vị trí được yêu cầu.Reapply button in the BREAKPOINTS section header. This should make the breakpoints "jump back" to the requested location. Bỏ qua mã không thú vịVs Code Node.js Debugging có một tính năng để tránh mã nguồn mà bạn không muốn bước qua (còn được gọi là 'Just My Code'). Tính năng này có thể được bật với thuộc tính 5 trong cấu hình khởi chạy của bạn. 5 là một mảng các mẫu GLOB cho các đường dẫn tập lệnh bỏ qua.Ví dụ: sử dụng: 7Tất cả mã trong các thư mục 7 và 32 trong dự án của bạn sẽ bị bỏ qua. 5 cũng áp dụng cho vị trí được hiển thị khi gọi 34 và các phương thức tương tự: vị trí không bị trượt đầu tiên trong ngăn xếp sẽ được hiển thị bên cạnh đầu ra trong bảng điều khiển gỡ lỗi.Các mô-đun lõi tích hợp của Node.js có thể được gọi bằng 'Tên ma thuật' 35 trong một mẫu GLOB. Ví dụ sau bỏ qua tất cả các mô -đun nội bộ:core modules of Node.js can be referred to by the 'magic name' 35 in a glob pattern. The following example skips all internal modules: 8Các quy tắc 'bỏ qua' chính xác như sau:
Nguồn bị bỏ qua được hiển thị theo kiểu 'mờ' trong chế độ xem ngăn xếp cuộc gọi: Di chuột qua các mục mờ giải thích lý do tại sao khung ngăn xếp bị mờ. Một mục menu ngữ cảnh trên ngăn xếp cuộc gọi, chuyển đổi bỏ qua tệp này cho phép bạn dễ dàng bỏ qua một tệp trong thời gian chạy mà không cần thêm nó vào cấu hình khởi chạy của bạn. Tùy chọn này chỉ tồn tại cho phiên gỡ lỗi hiện tại. Bạn cũng có thể sử dụng nó để ngừng bỏ qua một tệp bị bỏ qua bởi tùy chọn 5 trong cấu hình khởi chạy của bạn.Toggle skipping this file enables you to easily skip a file at runtime without adding it to your launch config. This option only persists for the
current debugging session. You can also use it to stop skipping a file that is skipped by the 5 option in your launch config.
Trong ví dụ (chỉ dành cho giao thức 37) Ví dụ, tất cả trừ một mô-đun 'toán' bị bỏ qua: 9
Hỗ trợ Runtimes giống như nútTrình gỡ lỗi JavaScript hiện tại của mã hỗ trợ phiên bản nút ở hoặc trên 8.x, các phiên bản Chrome gần đây và các phiên bản cạnh gần đây (thông qua loại khởi chạy 41).Bước tiếp theoTrong trường hợp bạn chưa đọc phần Node.js, hãy xem:
Để xem các hướng dẫn về những điều cơ bản của Node.js gỡ lỗi, hãy xem các video này:
Để tìm hiểu về hỗ trợ chạy nhiệm vụ của mã vs, hãy truy cập:
Để viết tiện ích mở rộng trình gỡ lỗi của riêng bạn, hãy truy cập:
Câu hỏi thường gặpTôi có thể gỡ lỗi nếu tôi đang sử dụng symlinks không?Có, nếu bạn đã tạo các liên kết symlink cho các thư mục bên trong dự án của mình, chẳng hạn như với 01, bạn có thể gỡ lỗi các nguồn được liên kết với nhau bằng cách nói thời gian chạy của Node.js để bảo tồn các đường dẫn được liên kết với nhau. Sử dụng công tắc Node.exe 43 trong thuộc tính cấu hình khởi chạy của bạn 3. 3, một loạt các chuỗi, được chuyển đến phiên chạy thời gian chạy gỡ lỗi có thể thực thi, mặc định là Node.exe. 0Nếu tập lệnh chính của bạn nằm trong một đường dẫn được liên kết với nhau, thì bạn cũng sẽ cần thêm tùy chọn 46. Tùy chọn này chỉ có sẵn trong nút 10+.Làm cách nào để gỡ lỗi các mô -đun Ecmascript?Nếu bạn sử dụng ESM hoặc chuyển 47 cho Node.js để sử dụng các mô -đun ECMAscript, bạn có thể chuyển các tùy chọn này thông qua thuộc tính 3 của 1:
11/2/2022 |