「故障調查」標籤的文章
帶有「故障調查」標籤的文章共 21 篇,依發布日期由新到舊排列。
-
從睡眠恢復就壞掉的應用程式 ── Windows 電源事件的機制,以及耐得住恢復的業務應用寫法
打開筆電,業務應用程式的連線卻斷了──原因是設計從未把睡眠算進去。本文依一次資訊整理 WM_POWERBROADCAST 的通知流程、Modern Standby 的行為、斷線/重連設計、睡眠抑制,以及調查指令。
-
DllMain 與載入器鎖定 ── 「DLL 初始化什麼都別做」真正的理由
為什麼不能從 DllMain 呼叫 LoadLibrary,也不能和其他執行緒同步。本文依一次資訊說明載入器鎖定如何序列化每個 DLL 通知、結構上必定成立的死結場景、延遲初始化的正確設計,以及無回應的調查方式。
-
「沒有回應」的真面目 ── Windows 如何判定應用程式當住,以及不卡住的設計
Windows 的「沒有回應」是作業系統判定視窗 5 秒未取出訊息後,換成幽靈視窗的機制。本文涵蓋該判定的內部、無回應的經典原因、把重工作移出 UI 執行緒的設計,以及調查無回應的程序。
-
虛假喚醒 ── 條件變數為何「沒被通知也會醒來」,以及 Windows 上正確的等待方式
條件變數的等待即使沒有通知到來也可能返回(虛假喚醒)。本文從 Windows 實作說明規格為何允許它,並展示 Win32、C++ 與 C# 裡用 while 迴圈與述語正確等待的寫法。
-
WPR/WPA 實務 ── 從系統整體調查「整台 PC 變慢」
工作管理員追不到的「整台 PC 變慢」「開機很慢」,可用 WPR/WPA 擷取整個 OS 的 ETW 追蹤再讀。本文說明 wpr.exe 擷取步驟,以及在 WPA 裡怎麼讀 CPU、等待與磁碟 I/O。
-
OneDrive「隨選檔案」與業務應用 ── 預留位置打破的前提與對策
桌面 CSV 打不開、匯入以「找不到檔案」失敗,原因可能是 OneDrive 的已知資料夾搬移與隨選檔案。本文說明預留位置的運作、如何用屬性判斷狀態,以及應用與 IT 各自能做的事。
-
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 虛擬記憶體與實體記憶體的關係、分頁檔的角色,以及在記憶體不足或洩漏調查時應該檢視的指標。
-
多執行緒的實務最佳實踐 .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、發布與更新、維護等應留意的重點。
-
Windows 應用的 crash dump 收集入門 - 先搞清楚 WER / ProcDump / WinDbg 怎麼分工
本文整理在 Windows 應用追難以重現的 crash 時,要先以 WER LocalDumps 應用單位設定為起手式,再依現場狀況追加 ProcDump,最後才考慮 MiniDumpWriteDump 自製收集的決策順序。讀完能理解 mini 與 full dump 的取捨、PDB 與保存運維要點,以及 Wi...
-
工業相機控制應用跑一個月後突然崩潰時(後篇) - 什麼是 Application Verifier 與異常系測試基盤的做法
後篇整理 Application Verifier 是什麼以及怎麼把它編進 Windows 異常系測試基盤。用 Handles 抓 invalid handle、Low Resource Simulation 不弄掛機器就觸發資源不足,搭配 harness EXE 與自家日誌,做出「壞了能解釋」的基盤。
-
工業相機控制應用跑一個月後突然崩潰時(前篇) - handle leak 的找法與長時間運轉用的日誌設計
本文以工業相機控制應用連續運轉約一個月後突然崩潰的案例,整理 handle leak 的特徵、與記憶體流失的差異,以及如何用 Handle Count 斜率與 create/close 配對日誌追出真正洩漏的位置。讀者可學到把長時間運轉的故障切成可觀測形式,並用短迴圈反覆壓測 reconnect 與 timeou...
-
TCP 重送讓工業相機通訊卡幾秒時 - RFC1323 timestamp 與重送等待的切分
本文整理工業相機 TCP 通訊偶爾卡幾秒的切分思路:先在 wire 上用 Wireshark 確認是封包遺失後的 RTO 重送等待,再核對 SYN/SYN-ACK 是否協商 TCP timestamps option,並說明 RFC1323 系 timestamp 如何消除重送時 RTT 量測的模糊、抑制 RTO...