「故障調查」標籤的文章
帶有「故障調查」標籤的文章共 22 篇,依發布日期由新到舊排列。
-
Time Travel Debugging ── 把長期運轉中無法重現的問題「錄下來」再倒回去
一個月才出現一次的問題,當機傾印只拍得到結果。本文說明如何用 WinDbg 的 Time Travel Debugging(TTD) 錄下執行並倒回,涵蓋 TTD.exe 的錄製設計、環形緩衝區、TTD.Calls 查詢,以及和傾印的分工。
-
從睡眠恢復就壞掉的應用程式 ── 電源事件的機制,以及耐得住恢復的業務應用程式寫法
打開筆電,業務應用程式的連線卻斷了──原因是設計從未把睡眠算進去。本文依一次資訊整理 WM_POWERBROADCAST 的通知流程、Modern Standby 的行為、斷線/重連設計、睡眠抑制,以及調查指令。
-
DllMain 與載入器鎖定 ── 「DLL 初始化時什麼都別做」真正的理由
為什麼不能在 DllMain 裡呼叫 LoadLibrary 或與其他執行緒同步?本文依據一次資料,從序列化所有 DLL 通知的載入器鎖定機制,一路說明到死結成立的典型情境、延遲初始化等正確設計,以及無回應的調查步驟。
-
「沒有回應」的真面目 ── Windows 如何判定應用程式卡住,以及不卡住的設計
Windows 的「沒有回應」,是視窗 5 秒沒有取出訊息時由作業系統判定、並換成幽靈視窗的機制。本文從判定的內部運作,講到卡住的經典原因、把重工作移出 UI 執行緒的設計,以及無回應的調查程序。
-
虛假喚醒 ── 條件變數為何「沒被通知也會醒來」,以及 Windows 上正確的等待方式
條件變數的 wait 即使沒有通知到來也可能醒來(虛假喚醒)。本文從 Windows 的實作解開規格為何允許它,並用 Win32、C++ 與 C# 的程式碼示範以 while 與述詞撰寫的正確等待方式。
-
WPR/WPA 實務 ── 從系統整體調查「整台 PC 變慢」的效能調查入門
「整台 PC 變慢」「開機很慢」這類工作管理員追不到的效能問題,可以用擷取並閱讀整個 OS 的 ETW 追蹤的 WPR/WPA 來調查。本文從 wpr.exe 的擷取步驟,一路說明到在 WPA 裡怎麼讀 CPU、等待時間與磁碟 I/O。
-
OneDrive「隨選檔案」與業務應用 ── 預留位置打破的前提與對策
桌面上的 CSV 讀不了,匯入處理以「找不到檔案」中斷——原因可能是 OneDrive 的 KFM 與隨選檔案。本文說明預留位置的運作機制與屬性判斷,以及應用端和資訊部門各自的對策。
-
Windows 封包擷取實務 ── pktmon、netsh trace、Wireshark 怎麼分工
應用程式紀錄只留下「逾時」的通訊故障,看實際流過線路的封包就能往下挖一層。即使伺服器不能安裝 Wireshark,也能用作業系統內建的 pktmon 與 netsh trace 擷取。本文以實務步驟說明擷取與分析的分工。
-
解讀 Windows 錯誤碼 ── Win32、HRESULT、NTSTATUS 三層結構
出現 0x80004005 時,先分解再搜尋。本文整理 Win32 錯誤、HRESULT、NTSTATUS 的三層結構、0x8007xxxx 是包起來的 Win32 錯誤這個最重要模式,以及用 err.exe 與 PowerShell 查詢的方法。
-
Windows 的「記憶體使用量」代表什麼 ── 正確解讀 Working Set、Private Bytes、Commit 與分頁檔
工作管理員的記憶體、Working Set、Private Bytes、Commit 並非同一個數值。本文解說 Windows 虛擬記憶體與實體記憶體的關係、分頁檔的角色,以及在記憶體不足或洩漏調查時應該檢視的指標。
-
多執行緒實務最佳實踐 Java 篇 ── 虛擬執行緒時代的定石
Java 的多執行緒,定石是不直接建立執行緒,而是交給 ExecutorService 與虛擬執行緒。本文整理 synchronized 與 ReentrantLock 的使用區分、以中斷實現的協調式停止、ConcurrentHashMap 的原子操作,一直到 Swing 的 EDT 等實務原則。
-
多執行緒的實務最佳實踐 .NET篇 ── 在增加執行緒之前先決定的事
針對 .NET/C# 整理能防止「建立執行緒後偶爾當機、卡死」的設計定石。內容涵蓋不自行建立執行緒而改用 Task、減少共享可變狀態、鎖的紀律、以 CancellationToken 設計停止機制,以及 UI 執行緒的處理方式。
-
使用 Get-WinEvent 有效率地調查事件記錄 ── 篩選的速度決定調查所需的時間
本文整理如何用 PowerShell 有效率地進行 Windows 事件記錄的調查。說明以 Where-Object 篩選為什麼慢、FilterHashtable 與 XPath 的使用區分、重新開機、登入、應用程式異常結束等調查手法,以及跨多台伺服器收集記錄的方法。
-
Process Explorer / Handle / VMMap 實戰 ── 從「此刻」的狀態追查無回應、洩漏、「檔案使用中」
本文是調查「愈用愈重」「檔案刪不掉」「無回應」的 Sysinternals 實戰系列第 2 彈。從實務角度解說 Process Explorer 的控制代碼搜尋、執行緒堆疊、洩漏監控欄位、handle.exe,以及用 VMMap 拆解記憶體組成的做法。
-
Windows的時間同步(w32time)與業務系統 ── 從機制原理解決「日誌時間戳記對不上」的問題
從Windows Time服務(w32time)的機制,解說裝置與PC之間日誌時間產生落差的原因。內容涵蓋網域階層與工作群組的預設行為、以w32tm指令進行的診斷、高精確度時間與虛擬機器的注意事項,一直到併用Stopwatch與UTC的日誌設計。
-
接手了沒有原始碼也沒有規格書的系統 ── 不停機維運的實務步驟
本文整理著手維運沒有原始碼、也沒有規格書之業務系統的實務步驟,內容涵蓋現行環境的保全與備份、執行檔・資料庫的盤點、從行為復原規格,以及延命・包裝・重建的判斷。
-
MAX_PATH 與 Windows 路徑・檔案名稱的陷阱 ── 260 字元限制、保留名稱、結尾句點、大小寫
本文整理「找不到檔案」這類問題的常見原因──路徑與檔案名稱的限制。內容涵蓋 MAX_PATH=260 字元的組成、透過 LongPathsEnabled 啟用長路徑、CON 等保留名稱、結尾句點的正規化,直到 Path.Combine 的陷阱。
-
Windows 事件記錄・ETW 入門 ── 讓業務應用程式的日誌搭上 OS 標準機制
Windows 業務應用程式的日誌,是不是只靠檔案日誌解決?事件記錄與 ETW,是維運人員與 OS 標準工具能看到的另一個層級的記錄。本文說明三種手段的分工、.NET 的寫入方式、透過 EventSource 進行 ETW 儀器化、收集與調查的實務,以及來源未註冊、日誌肥大化等常見陷阱。
-
委外・委託開發 Windows 應用程式前該整理的事項
在委外・委託開發 Windows 應用程式之前,整理既有軟體改版、設備整合、COM/ActiveX、發布與更新、維護等應留意的重點。
-
用 Application Verifier 打造 Windows 異常情境測試基礎架構
本文梳理 Application Verifier 是什麼,並一併說明如何用 Handles、Heaps、Low Resource Simulation 與 !htrace 打造 Windows 的異常情境測試基礎架構。
-
工業相機長期運轉當機調查 - 控制代碼洩漏篇
本文以工業相機控制應用程式的案例,從找出控制代碼洩漏與日誌設計這兩個角度,梳理 Windows 應用程式長時間運轉後突然當掉時該怎麼看。
-
TCP 重送導致工業相機通訊停頓的原因與釐清方法
本文梳理工業相機通訊因 TCP 重送而停頓數秒時的釐清方法,並一併說明封包遺失、RTO、RFC1323 timestamp 與 Wireshark 的檢查重點。