Các kỹ thuật gỡ lỗi dùng trong trình duyệt
(alan.norbauer.com)Mẹo tận dụng trình gỡ lỗi của trình duyệt
-
Điểm dừng có điều kiện nâng cao
- Mở rộng chức năng của điểm dừng có điều kiện bằng cách dùng các biểu thức có tác dụng phụ
- Có thể ghi log vào console mà không dừng thực thi thông qua logpoint/tracepoint
- Dùng
console.countđể đếm số lần thực thi - Các trình duyệt chính đều hỗ trợ logpoint/tracepoint (tính đến tháng 5 năm 2020)
-
Tận dụng cửa sổ theo dõi
- Có thể dùng
console.logtrong cửa sổ theo dõi - Để thực thi biểu thức tại thời điểm DOM thay đổi, hãy đặt điểm dừng theo thay đổi DOM rồi thêm biểu thức theo dõi
- Có thể dùng
-
Theo dõi call stack
- Theo dõi call stack của lời gọi hàm để tìm các lời gọi không khớp
- Dùng
console.tracetrong điểm dừng có điều kiện để kiểm tra call stack
-
Thay đổi hành vi của chương trình
- Có thể thay đổi hành vi chương trình ngay lập tức ngay trong trình duyệt
- Ghi đè tham số hàm để điều chỉnh hành vi
-
Profiling hiệu năng đơn giản
- Dùng API đo thời gian của console để đo thời gian thực thi mã
- Dùng
console.time('label')vàconsole.timeEnd('label')để đo thời gian
-
Tận dụng arity của hàm
- Chỉ kích hoạt điểm dừng khi được gọi với số lượng đối số nhất định
- Dùng để tìm sự không khớp về số lượng đối số khi gọi hàm
-
Tận dụng thời gian
- Chỉ kích hoạt điểm dừng sau khi đã trôi qua một khoảng thời gian nhất định kể từ lúc trang được tải
- Bỏ qua điểm dừng trong một khoảng thời gian nhất định và chỉ kích hoạt sau đó
-
Tận dụng CSS
- Kích hoạt điểm dừng dựa trên giá trị CSS đã tính toán
-
Chỉ dừng ở các lần gọi chẵn
- Chỉ kích hoạt điểm dừng ở các lần thực thi thứ chẵn
-
Dừng bằng lấy mẫu
- Chỉ kích hoạt điểm dừng với các mẫu ngẫu nhiên của quá trình thực thi
-
Không dừng ở một dòng cụ thể
- Dùng tùy chọn "Never Pause Here" để tránh dừng tại một dòng cụ thể
-
Tự động gán ID instance
- Tự động gán ID duy nhất cho mỗi instance của class
-
Bật/tắt theo cách lập trình
- Dùng biến boolean toàn cục để bật/tắt điểm dừng có điều kiện theo cách lập trình
-
Lời gọi class
monitor()- Dùng lệnh
monitorcủa Chrome để theo dõi lời gọi method của class
- Dùng lệnh
-
Gọi hàm và gỡ lỗi
- Gọi
debuggertrong console rồi gọi hàm để gỡ lỗi
- Gọi
-
Dừng thực thi khi URL thay đổi
- Dừng thực thi trước khi URL thay đổi trong ứng dụng trang đơn
-
Gỡ lỗi khi đọc thuộc tính
- Kích hoạt điểm dừng mỗi khi một thuộc tính của đối tượng được đọc
-
Dùng
copy()- Dùng API console
copy()để sao chép thông tin trực tiếp từ trình duyệt vào clipboard
- Dùng API console
-
Gỡ lỗi HTML/CSS
- Dùng console JS để chẩn đoán các vấn đề HTML/CSS
- Kiểm tra DOM khi JS bị vô hiệu hóa
- Kiểm tra các phần tử DOM chỉ xuất hiện theo điều kiện
- Ghi lại snapshot DOM
- Theo dõi phần tử đang được focus
- Tìm các phần tử dùng phông chữ đậm
- Tham chiếu phần tử đang được chọn hiện tại
- Theo dõi sự kiện
Ý kiến của GN⁺
Điểm quan trọng nhất của bài viết này là nó cung cấp nhiều kỹ thuật và mẹo giúp nhà phát triển gỡ lỗi mã hiệu quả hơn và giải quyết vấn đề bằng trình gỡ lỗi của trình duyệt. Thông tin này rất hữu ích cho các lập trình viên phần mềm và đặc biệt thú vị vì có thể tiết kiệm thời gian khi theo dõi các lỗi phức tạp hoặc xử lý vấn đề hiệu năng.
1 bình luận
Ý kiến trên Hacker News
Sự phát triển của các công cụ gỡ lỗi tích hợp trong trình duyệt
Cách tận dụng câu lệnh debugger
debugger;) là cách duy nhất để vượt qua stack đệ quy trong trình gỡ lỗi của Chrome.Khó khăn khi gỡ lỗi backend NodeJS
pdb.set_trace()/IEx.pry().console.log, tạo cảm giác rất thô sơ.Đề xuất Werkzeug
Cách truy cập biến cục bộ của IIFE
Cách gỡ lỗi thông qua chuỗi UI
Gỡ lỗi bằng breakpoint có điều kiện
{configOption: true}thành{get configOption() { debugger; return true; }}.Tính năng chỉ có trên Chrome là 'Monitor Events for Element'
Sự thiếu vắng của API
queryObjectsqueryObjects, thứ có thể trả về danh sách mọi đối tượng được tạo bởi một constructor cụ thể.queryObjects(Function)để lấy danh sách tất cả các hàm đang có trên heap.Khó khăn khi dùng watch variable