2009-03-20 37 views
8

Tôi đang cố gắng tạo một chương trình ghi lại toàn bộ các thứ theo định kỳ. Lý do cụ thể là nếu nó bluescreens, một nhà phát triển có thể quay trở lại và kiểm tra rất nhiều môi trường và xem những gì đang xảy ra xung quanh thời gian đó.Mô phỏng một màn hình xanh

Vấn đề của tôi, đó là cách để gây ra bluescreen? Có thể với một cuộc gọi WindowsAPI (ZeroMemory có thể?).

Anywhoo, nếu bạn có thể nghĩ ra một cách để gây ra một bluescreen trên cuộc gọi, tôi sẽ biết ơn.

Máy tính tôi đang thử nghiệm trên được thiết kế để có những thứ như thế này haha.

bằng cách ngôn ngữ tôi đang sử dụng là C \ C++. Cảm ơn bạn

+0

Tải trình điều khiển thiết bị nhanh chóng thực thi lệnh không hợp lệ? – derobert

Trả lời

4

Nếu bạn giết quá trình csrss, bạn sẽ nhận được một màn hình màu xanh khá nhanh.

+0

Nó có xảy ra mọi lúc không? Hoặc có phần nào đó là xu lật không? –

+0

CSRSS là một quá trình quan trọng - hệ thống sẽ luôn kiểm tra lỗi khi nó bị treo. –

+0

Tôi thực sự không thể thấy sự khác biệt nhiều giữa một BSOD giả và giết chết csrss ... –

1

Nếu bạn muốn mô phỏng một vụ tai nạn cứng chẳng hạn như màn hình xanh, bạn sẽ khá nhiều phải giật dây nguồn. Không được khuyến khích.

Trong trường hợp xảy ra sự cố, mọi thứ không được lưu vào bộ nhớ liên tục sẽ bị mất. Nếu bạn muốn mô phỏng sự cố cho các mục đích ghi nhật ký, hãy viết "công tắc giết" vào nhật ký của bạn, thao tác này sẽ ngừng ghi nhật ký. Bây giờ bạn có thể mô phỏng sự cố bằng cách giết chết quá trình ghi nhật ký và đảm bảo rằng bạn có dữ liệu bạn muốn có trong trường hợp xảy ra sự cố.

+0

Họ sẽ thực sự không có chương trình nào khác chạy trên máy tính mà là của tôi nên tôi không lo lắng về việc mất dữ liệu. Tôi đang sử dụng máy tính này đặc biệt để kiểm tra căng thẳng. Tôi muốn một bluescreen thực tế cho độ chính xác. –

12

Bạn có thể cấu hình một máy sụp đổ trên một phím tắt (Ctrl-ScrollLock)

Kể từ khi nó xuất hiện mà có những lúc đó sẽ không hoạt động trên một số hệ thống với USB bàn phím, bạn cũng có thể lấy Công cụ gỡ lỗi cho Windows, cài đặt trình gỡ lỗi hạt nhân và sử dụng lệnh ".crash" để buộc kiểm tra lỗi.

+0

Phía duy nhất xuống đây là một màn hình blues "giả". Tôi không có nghĩa là giả như trong bạn có thể phục hồi, nhưng có một codepath trong cửa sổ đặc biệt bluescreens khi bạn nhấn phím, hoặc sử dụng trình gỡ lỗi hạt nhân, nơi giết chết csrss thực sự là một vụ tai nạn. –

+0

Đối với tùy chọn bàn phím, tai nạn là trong trình điều khiển xử lý ngắt - không thể nhận được nhiều hơn nữa không xác định hơn thế. Khá giống với vụ tai nạn kd - đột nhập vào kd bằng cách sử dụng Ctrl-C và hệ thống có thể ở trạng thái bất kỳ. Sự cố CSRSS thực sự là do mã cụ thể trong Windows. –

+0

@Michael, nó bạo lực hơn CSRSS, nhưng vẫn không gây ra tham nhũng bộ nhớ vv, và do đó có thể ít hiệu quả hơn để thử nghiệm. Mặc dù nếu một người muốn thực sự bạo lực, kéo phích cắm có hiệu quả :) – bdonlan

0

Tôi không chắc chắn chính xác những gì bạn muốn được thử nghiệm. Kể từ khi chương trình của bạn chạy định kỳ, chắc chắn nó đủ để kiểm tra xem thông tin đang được bán phá giá ở tần số mà bạn chỉ định trong khi hệ thống đang chạy? Bạn có kiểm tra xem thông tin có ở lại sau màn hình xanh không? Tùy thuộc vào cách bạn đang đổ nó (và cho dù bạn đang xả bộ đệm), điều này có thể không cần thiết.

+0

Tôi đang cố gắng tạo một chương trình để các nhà phát triển hiểu được nguyên nhân gây ra bluescreens. Nó hoạt động bằng cách lưu trữ rất nhiều thông tin thời gian chạy vào những thời điểm nhất định. –

+0

@dafis - quan điểm của tôi là chương trình lưu trữ thông tin. vì nó lưu trữ định kỳ, không phải tại thời điểm màn hình xanh, nó phải đủ để kiểm tra thông tin được lưu trữ. Tôi không chắc chắn những lợi ích bổ sung bạn nhận được từ gây ra màn hình màu xanh. – tvanfosson

+0

@tvan, có lẽ anh ta muốn xem liệu thông tin sẽ hữu ích trong việc xác định nguyên nhân của màn ảnh xanh? – bdonlan

6

Để gây ra BSOD, trình điều khiển chạy trong chế độ hạt nhân cần phải gây ra lỗi này. Nếu bạn thực sự muốn làm điều này, bạn có thể viết một trình điều khiển cho thấy KeBugCheck để usermode.

http://msdn.microsoft.com/en-us/library/ms801640.aspx

Nhờ Andrew dưới đây để chỉ tiện ích này ra:

http://download.sysinternals.com/files/NotMyFault.zip

+1

SysInternals cung cấp một tiện ích gọi là "[NotMyFault] (http://download.sysinternals.com/files/NotMyFault.zip)" có thể gây ra sự cố (bằng cách gọi 'KeBugCheckEx' và một số cách khác) nếu bạn không muốn viết của riêng bạn. –

1

Trước hết, tôi sẽ khuyên bạn nên sử dụng một máy ảo để thử nghiệm BSOD này. Điều này sẽ cho phép bạn giữ một bản sao lưu chỉ trong trường hợp BSOD làm một số thiệt hại cho hệ thống. Dưới đây là mẹo về cách tạo BSOD simply by pressing CTRL+SCROLLLOCK+SCROLLLOCK.

Có API Windows để tạo một API không? Không, theo số this article. Tuy nhiên, nếu bạn sẽ gọi một số API nhất định với dữ liệu không hợp lệ, chúng vẫn có thể gây ra sự cố bên trong hạt nhân, điều này sẽ dẫn đến BSOD của bạn.

0

Nếu bạn không muốn viết mã (trình điều khiển, IOCTL ...), bạn có thể sử dụng DiskCryptor. Lưu ý rằng không cần mã hóa ổ đĩa.

Chỉ cần cài đặt trình điều khiển:

dcinst.exe -setup

Và sau đó tạo ra một BSOD sử dụng DC console:

dccon.exe -bsod

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