2009-08-24 20 views
6

Vâng, may mắn thay tôi đã không viết nhiều ứng dụng gây ra một BSOD nhưng tôi chỉ tự hỏi về sự hữu ích của thông tin trên màn hình này. Nó có chứa bất kỳ thông tin hữu ích nào có thể giúp tôi tìm lỗi trong mã của tôi không? Nếu vậy, tôi cần gì, chính xác?Làm cách nào để phân tích BSOD và thông tin lỗi mà nó cung cấp cho tôi?

Sau đó, hệ thống khởi động lại và có thể đã viết một số nhật ký lỗi hoặc thông tin khác vào hệ thống ở đâu đó. Nó ở đâu, nó chứa gì và làm cách nào để sử dụng nó để cải thiện mã của tôi?

Tôi đã nhận được BSOD thường xuyên trong quá khứ khi tôi tương tác với hệ thống PBX nơi số lượng tài liệu của trình điều khiển của nó chỉ vắng mặt, vì vậy tôi phải thực hiện một số mã hóa thử và lỗi. May mắn thay, bây giờ tôi làm việc cho một công ty khác và không thấy bất kỳ BSOD nào là kết quả của mã của tôi.

Trả lời

5

Nếu bạn muốn có một cách khá dễ dàng để tìm hiểu những gì đã gây ra một vụ tai nạn hệ điều hành mà sẽ làm việc ~ 90% thời gian - giả sử bạn có một đổ sụp đổ sẵn - sau đó hãy thử như sau:

  • Tải WinDbg như một phần của gói Debugging tools for Windows
  • Run WinDbg
  • Chọn "Open Crash Dump" hình thành các tập tin trình đơn
  • Khi các tập tin dump đã nạp gõ "analyze -v" và nhấn Enter
  • WinD bg sẽ thực hiện phân tích tự động về sự cố và sẽ cung cấp một lượng thông tin khổng lồ về trạng thái hệ thống tại thời điểm xảy ra sự cố. Nó thường sẽ có thể cho bạn biết mô-đun nào bị lỗi và loại lỗi nào gây ra sự cố. Bạn cũng sẽ nhận được một dấu vết ngăn xếp mà có thể hoặc có thể không hữu ích cho bạn.

Lưu ý rằng bạn sẽ phải configure symbols trong WinDbg nếu bạn muốn theo dõi ngăn xếp cung cấp cho bạn tên hàm.

Nếu phân tích tự động không đủ thì có nhiều lệnh mà WinDbg cung cấp để cho phép bạn tìm ra chính xác những gì đang diễn ra tại thời điểm xảy ra sự cố. Tệp trợ giúp là một nơi tốt để bắt đầu trong trường hợp này.

3

Nói chung, bạn không thể gây ra sự cố hệ điều hành hoặc kiểm tra lỗi từ bên trong mã ứng dụng của mình. Điều đó nói rằng, nếu bạn đang tìm kiếm lời khuyên chung và các công cụ, tôi khuyên bạn nên NTDebugging blog. Hầu hết các công cụ là cách trên đầu của tôi.

Điều gì xảy ra khi hệ điều hành gặp sự cố là nó sẽ viết tệp kết xuất hạt nhân, tùy thuộc vào cờ hiện tại, v.v., bạn nhận được nhiều thông tin hơn trong đó. Bạn có thể tải lên tệp kết xuất trong windbg hoặc một số trình gỡ lỗi khác. Windbg có lệnh !analyze hữu ích, sẽ kiểm tra tệp kết xuất và cung cấp cho bạn gợi ý về xô sự cố rơi vào và các thủ phạm có thể xảy ra. Ngoài ra, hãy kiểm tra tài liệu hướng dẫn về nguyên nhân chung của việc kiểm tra lỗi và bạn có thể làm gì để giải quyết vấn đề này.

+0

Bạn có thể gây ra BSOD từ mã bằng cách chỉ cần gọi phương thức API Windows liên quan. Đây là những gì hầu hết các trình điều khiển thiết bị đang thực sự làm. Thay vì giải quyết lỗi, họ chỉ cần đặt hệ thống ở chế độ Hoảng loạn. May mắn thay, hầu hết các trình điều khiển thiết bị hiện đại cố gắng tránh chế độ hoảng loạn và sẽ cố gắng giải quyết lỗi thay thế. –

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