JavaScript: Cách đặt Điểm ngắt có điều kiện trong công cụ gỡ lỗi của Chrome


100

Tôi có một tệp js đơn giản này, nó in ngày tháng liên tục.

Tôi đang sử dụng công cụ Trình gỡ lỗi Google Chrome (F12)

Câu hỏi của tôi là, Có thể đặt điểm ngắt có điều kiện trong Google Chrome không ??

Trong mã của tôi, tôi muốn đặt điểm ngắt nếu giá trị giây bằng 50 ??

s = date.getSeconds();

Đây là jsfiddle mà nguồn của tôi là

(Không chắc tại sao nó không hoạt động trong jsfiddle)

Dù sao câu hỏi của tôi là, Có thể thiết lập điểm ngắt điều kiện trong các công cụ chrome Debugger không ??


1
+1 vì tôi không biết điều đó có thể xảy ra cho đến khi kiểm tra tài liệu để trả lời câu hỏi này. Cảm ơn!
Theraot

Câu trả lời:


141

Có, nó là có thể.

Nhấp chuột phải vào điểm đánh dấu của điểm ngắt và chọn "Chỉnh sửa điểm ngắt ..." ở đó bạn có thể đặt điều kiện.

Từ Công cụ dành cho nhà phát triển Chrome trên Breakpoints tại Develop.google.com (Tôi nhấn mạnh):

Lưu ý: Tất cả các điểm ngắt bạn đã đặt sẽ xuất hiện bên dưới Điểm ngắt ở thanh bên bên phải. Nhấp vào mục nhập sẽ chuyển đến dòng được đánh dấu trong tệp nguồn. Khi bạn đã đặt điểm ngắt, hãy nhấp chuột phải vào chỉ báo điểm ngắt thẻ màu xanh lam để đặt câu lệnh điều kiện cho điểm ngắt đó . Nhập một biểu thức và điểm ngắt sẽ chỉ tạm dừng nếu điều kiện là đúng.


Cảm ơn, tôi đã làm như bạn đã đề cập, chỉnh sửa điểm ngắt và đặt if (s == 50) nhưng tại sao nó không dừng lại ở điều kiện đó ??
Pawan

2
@PreethiJain chỉ viết điều kiện "s == 50" (không có dấu ngoặc kép). Bằng cách này, tôi cố gắng làm cho công việc jsfiddle tại địa chỉ: jsfiddle.net/nVpXN/6
Theraot

6
Bạn thậm chí không cần thêm một điểm ngắt để bắt đầu. Chỉ cần nhấp chuột phải vào một dòng ngay lập tức và nhấp vào "Thêm điểm ngắt có điều kiện ..." .
Martin Ender

2
Trời ạ, đó là năm 2017 và tôi đang tìm hiểu những điều cơ bản mới về Chrome. #Awesomeness
The Qodesmith,

1
Thao tác này sẽ chỉ kiểm tra câu lệnh tại thời điểm này trong quá trình thực thi mã và sau đó ngắt nếu đúng như vậy, giống như một điểm ngắt trong câu lệnh if. Tôi nghĩ OP muốn biết liệu trình gỡ lỗi có kiểm tra mỗi lần thực thi câu lệnh hay không và liệu điều kiện có được đáp ứng hay không và liệu trình gỡ lỗi có ngắt trên dòng này hay không. Hành vi này hữu ích hơn nhiều vì bạn không cần phải chơi trò thám tử để tìm ra khi một biến số làm điều gì đó bất ngờ.
ejectamenta

27

Hãy nhìn vào debuggertuyên bố. Về cơ bản, nó gọi bất kỳ công cụ gỡ lỗi nào có sẵn và trong Chrome, nó hoạt động như thể trình thông dịch gặp một điểm ngắt.

Mã của bạn sẽ là:

s = date.getSeconds();
if (s == 50) {
   debugger;
}

Từ tham khảo :

[trình gỡ lỗi] Gọi bất kỳ chức năng gỡ lỗi nào có sẵn. Nếu không có chức năng gỡ lỗi, câu lệnh này không có hiệu lực.


Trong khi trên thực tế, điều này theo đúng tinh thần của cách ban đầu mà câu hỏi ban đầu được hỏi, và đó là thông tin tuyệt vời; Tôi nghĩ câu hỏi thực sự là về Công cụ Chrome, không phải ECMAscript. Điều đó đang được nói; có một lưu ý cần được thêm vào: loại bỏ tất cả các debuggerlệnh gọi trong mã sản xuất. (Tôi khá chắc chắn rằng linting sẽ gặp lỗi nếu có trình gỡ lỗi, nhưng nó đáng được gọi ra bất cứ khi nào chủ đề được nêu ra).
Crispen Smith

1
bạn không cần câu lệnh trình gỡ lỗi, bạn cũng có thể có một câu lệnh trống bên trong if và chỉ cần thêm một điểm ngắt vào đó.
ejectamenta

8

Bạn có thể đặt điểm ngắt có điều kiện trong Google Chrome bằng cách làm theo các bước sau:

1. nhấp chuột phải vào điểm ngắt mà bạn muốn dừng lại, vui lòng chk trên nhập mô tả hình ảnh ở đây

2. nhấp vào "Thêm điểm ngắt có điều kiện", một văn bản sẽ xuất hiện, bạn có thể thêm điều kiện (kết quả sẽ là 'đúng' nếu điều kiện thỏa mãn, ngược lại là 'sai'), màu điểm ngắt sẽ chuyển sang màu cam sau khi điều kiện được thêm vào, chk trên nhập mô tả hình ảnh ở đây

3. tải cùng một trang bạn có thể thấy điểm ngắt sẽ hoạt động nếu điều kiện được thỏa mãn như nhập mô tả hình ảnh ở đây

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.