Windows 8系統曾有一隻“ASCII貓” 幫助識別黑屏錯誤
Windows 開發者對貓真的是情有獨鍾。除了Windows 10 系統就出現的非官方吉祥物NinjaCat 之外,事實上在Windows 8 系統中開發人員就引入了一隻ASCII 碼的貓圖。只是因為繪製ASCII 貓圖像需要耗費時間和內存,Windows 性能團隊最後要求開發團隊移除了貓圖像。
在Windows 8 平板體驗中,對各種組件的組織和管理可以認為是層的集合,每個層都堆疊在下一個層的上面。鑑於今天討論的話題,重要的層是開始層(Start layer)和應用層(Apps layer)。如果你正在使用一個應用程序,那麼應用層會是全屏的。如果你已經打開了開始從菜單,那麼開始層會覆蓋應用層。如果最後一個應用退出了,那麼開始層就會自動打開。任何時候都應該有一個全屏層。
當然,在開發過程中,不可避免的會出現錯誤,如果開始層和應用層都不顯示,那麼就會導致黑屏。
導致黑屏的原因有很多種,例如顯卡驅動不兼容導致的崩潰;或者顯卡驅動正常工作,但是合成器崩潰,導致沒有給顯卡驅動提供任何東西;或者合成器正常工作,但是Shell 崩潰了,所以合成器沒有東西可以渲染;又或者Shell 可以正常工作,但它忘記在屏幕上放點東西。
針對最後一種情況,Windows 8 Shell 創建了一個支持窗口(backstop window),位於所有其他層的下面。如果其他層都不存在,那麼至少你有一個後背窗口。在早期的調試版本中,該支持窗口包含一個ASCII 碼的貓咪圖。這樣,如果你看到貓,你就知道你是在最後的失敗案例中。shell 正在運行,但是忘記在屏幕上顯示一些東西。
為什麼是貓?
寫支持窗口的開發者非常喜歡貓,他們使用了一系列貓的圖像。在系統啟動的時候,他們將第一幅貓的圖像畫在支持窗口上,每次支持窗口被要求重新繪製的時候,他們就循環到下一幅圖片。這就像一個故事,每次都是一句話,每句話都在下一次出現災難性故障時被揭示出來。