Tôi có một ứng dụng Windows rất lớn, phức tạp (triệu + LOC) được viết bằng C++. Chúng tôi nhận được một số báo cáo mỗi ngày rằng ứng dụng đã bị khóa và phải bị đóng cửa một cách mạnh mẽ.Phát hiện ứng dụng treo
Trong khi chúng tôi có báo cáo rộng rãi về sự cố tại chỗ, tôi muốn mở rộng điều này để bao gồm các trường hợp treo này - ngay cả khi đăng nhập nặng tại chỗ, chúng tôi không thể theo dõi nguyên nhân gốc của một số trường hợp này. Chúng tôi có thể thấy rõ hoạt động dừng ở đâu - nhưng không phải là lý do tại sao nó dừng lại, ngay cả khi đánh giá đầu ra của tất cả các chuỗi.
Sự cố xảy ra khi xảy ra sự cố xảy ra. Cho đến nay, tốt nhất tôi có thể đưa ra là một chuỗi watchdog (vì chúng tôi có bằng chứng rằng các chủ đề nền tiếp tục chạy các vấn đề w/out) định kỳ ping cửa sổ chính với một thông điệp tùy chỉnh, và xác nhận rằng nó được xử lý trong một thời trang kịp thời. Điều này sẽ chỉ nắm bắt thread GUI treo, nhưng điều này dường như là nơi mà phần lớn trong số họ đang xảy ra. Nếu không nhận được thư trả lời trong khung thời gian có thể định cấu hình, chúng tôi sẽ ghi lại bộ nhớ và ngăn xếp ngăn xếp và cung cấp cho người dùng tùy chọn tiếp tục chờ hoặc khởi động lại ứng dụng.
Có ai biết cách nào tốt hơn để thực hiện việc này so với việc bỏ phiếu định kỳ của cửa sổ chính theo cách này không? Có vẻ như vụng về đau đớn, nhưng tôi đã không thấy các lựa chọn thay thế sẽ hoạt động trên nền tảng của chúng tôi - Windows XP và Windows 2003 Server. Tôi thấy rằng Vista có nhiều công cụ tốt hơn cho điều này, nhưng tiếc là điều đó sẽ không giúp ích gì cho chúng tôi.
Đủ để nói rằng chúng tôi đã thực hiện chẩn đoán rộng rãi về điều này và đã được đáp ứng với thành công chỉ có giới hạn. Lưu ý rằng việc gắn windbg trong thời gian thực không phải là một tùy chọn, vì chúng tôi không nhận được báo cáo cho đến giờ hoặc ngày sau sự cố. Chúng tôi sẽ có thể truy xuất một tệp kết xuất bộ nhớ và tệp nhật ký, nhưng không có gì khác.
Bất kỳ đề xuất nào ngoài những gì tôi đang lên kế hoạch sẽ được đánh giá cao.
Khi bị treo, tất cả các chuỗi có khóa không? Ứng dụng có tiếp tục tạo tệp nhật ký không? –
Bạn có muốn chính ứng dụng phát hiện ra nó đã treo hoặc đang có một quá trình riêng biệt để giám sát ứng dụng một tùy chọn không? –
Ứng dụng thực hiện - trong hầu hết các trường hợp - tiếp tục tạo ghi nhật ký trong các chủ đề khác ngoài cửa sổ chính. Trong một tỷ lệ rất thấp các trường hợp, có vẻ như tất cả các lần đăng nhập đều dừng lại trên các luồng. Chúng tôi đang tìm ứng dụng tự giám sát. –