2012-04-05 47 views
19

Tôi đã có một ứng dụng javascript khá phức tạp (nó không sử dụng khung bên ngoài) mà người dùng hiện đang thử nghiệm (một vài nghìn dòng). Tôi đã nhận được báo cáo rằng người dùng nhận được cửa sổ bật lên trong Google Chrome cho biết:Cách gỡ lỗi trang không phản hồi trong Google Chrome?

(Các) trang sau không phản hồi. Bạn có thể đợi chúng để trở thành phản hồi hoặc tiêu diệt chúng.

Họ báo cáo rằng cách duy nhất để tiếp tục sử dụng ứng dụng là mở một cửa sổ Chrome mới, nhưng các tin nhắn sẽ trở lại sau vài phút và chỉ xảy ra khi họ cố truy cập một trang mới. Họ đặc biệt nói rằng họ bấm vào để đi đến một trang mới, và trang hiện tại không bao giờ thay đổi, họ chỉ thấy biểu tượng tải quay trong một phút cho đến khi cửa sổ bật lên xuất hiện.

Điều kỳ lạ là tôi đã thử nghiệm rộng rãi trên phiên bản chính xác của Chrome (18) mà những người dùng này đang gặp sự cố và tôi đã không gặp vấn đề gì. Tôi sắp xếp bối rối và không biết phải nhìn vào đâu ngay từ khi tôi không thể sao chép nó, bất kỳ ý tưởng nào về nơi để xem xét bên cạnh ít nhất là thử và tìm ra điều gì có thể gây ra lỗi đó?

+6

Hãy thử chạy SpeedTracer cho Chrome để có hồ sơ về bất kỳ quy trình chạy dài nào, sau đó điều tra các quy trình đó cho rò rỉ bộ nhớ, tính toán nặng, v.v. https://developers.google.com/web-toolkit/speedtracer/ – Mathletics

+1

One điều bạn có thể thử là chụp Heap Snapshot, để xem liệu có một số đối tượng tiêu thụ lượng bộ nhớ ngày càng tăng hay không.Ngoài ra, hãy thử phát hiện những phần nào trong mã của bạn là mã yêu cầu thời gian tính toán nhiều hơn và nhận xét chúng hoặc sử dụng setTimeout cho đến khi bạn có thể phát hiện chính xác vị trí của sự cố – NicoSantangelo

+0

đường? –

Trả lời

12

Sử dụng trình gỡ lỗi javascript chrome để tạm dừng (ngắt mã chạy) trong thời gian không phản hồi. Phải mất một thời gian, nhưng nó sẽ phá vỡ ở giữa bất cứ điều gì đang chạy quá lâu. Sau đó, bạn có thể sử dụng các điều khiển trình gỡ lỗi để bước xung quanh và xem những gì đang lặp không cần thiết.

+0

Nhưng vấn đề là tôi không thể tái tạo điều này, và tôi không chắc tại sao điều đó lại xảy ra. Vì tôi đã đăng câu hỏi này, tôi đã nhận được một số báo cáo khác về cùng một điều và điều này chỉ xảy ra với người dùng Chrome. –

+0

bạn có đang sử dụng * onbeforeunload * không? –

+0

Không, tôi không sử dụng ở bất cứ đâu. –

10

Tôi biết đây là một câu hỏi cũ nhưng tôi có vấn đề này là tốt, và khuyến nghị tốt nhất của tôi với bạn như sau:

Đóng Chrome hoàn toàn và sau đó thêm "enable-logging" để tắt chrome của bạn để bắt đầu với cờ đó, bạn thậm chí có thể thêm "--enable-logging --v = 1" để bật ghi nhật ký chi tiết.

Tôi biết với tôi, việc chèn điểm ngắt không phải là tùy chọn vì nó nằm trong tab mới bị lỗi trước khi tôi thậm chí có thể có bảng điều khiển. Tuy nhiên, bằng cách bật ghi nhật ký, bảng điều khiển được ghi vào một tệp trong thư mục dữ liệu chrome của bạn ("C: \ Users \ username \ AppData \ Local \ Google \ Chrome \ User Data")

Tôi hy vọng điều này sẽ giúp ai đó vào một ngày nào đó như nó đã làm tôi! : D

2

Tôi đã có một trang hôm nay có một số lỗi JS (vòng lặp vô hạn) và tôi không thể mở công cụ dev thông qua phím tắt hoặc nhấp chuột phải (Chrome 60.0.3112.113). Đã có thể vượt qua điều này bằng cách:

  1. mở tab mới
  2. công cụ mở dev (trên tab trống)
  3. Nhập URL và tải
  4. Pause JS thực hiện trong các công cụ dev

Có lẽ điều này sẽ giúp một ai đó! Ngoài ra, trình gỡ rối chrome vẫn tồn tại các điểm ngắt trên các tab trình duyệt (cho cùng một JS) vì vậy nếu tôi không thể xác định chính xác điều gì gây ra lỗi, các điểm ngắt của tôi sẽ vẫn ở đó trong một tab mới!

Các vấn đề liên quan