「缺陷調查」標籤的文章
帶有「缺陷調查」標籤的文章共 11 篇,依發布日期由新到舊排列。
-
多執行緒實務最佳實踐 C 語言篇 ── 以 Win32 API 的方式安全撰寫
C 語言 × Win32 的多執行緒有其定式:以 _beginthreadex 建立執行緒、SRW 鎖與條件變數、Interlocked、以停止事件 + WaitForMultipleObjects 設計停止流程。本文一併整理 TerminateThread 的危險性與 DllMain 的限制。
-
多執行緒實務最佳實踐 C++ 篇 ── 以 RAII 與 jthread 從結構上消除事故
C++ 的多執行緒是資料競爭會變成未定義行為的世界。本文整理 std::thread 解構函式的陷阱、以 jthread 與 stop_token 設計停止機制、scoped_lock 的死鎖迴避、atomic 的正確定位,以及與 Win32 同步 API 的使用區分。
-
磁碟區陰影複製服務(VSS)的機制與實務 ── 為什麼能備份使用中的檔案
明明使用中的檔案會因共用違規而無法複製,備份軟體卻為什麼辦得到?本文解說磁碟區陰影複製服務(VSS)中要求者・寫入器・提供者的角色分工、寫入時複製的機制、vssadmin 的實務操作與差異區的陷阱。
-
Windows I/O 的深層(第 6 回・最終回) ── 篩選驅動程式與迷你篩選驅動程式:Procmon 與病毒掃描為何能夠介入 I/O
本文是透過圖解說明 Windows 篩選驅動程式與迷你篩選驅動程式的系列最終回。整理了篩選管理員與海拔、pre/post 回呼、Procmon 與防毒軟體能夠檢查全部 I/O 的機制,直到「唯獨那個環境慢」的調查步驟。
-
Windows I/O 的深層(第 1 回) ── 所有讀寫都會變成 IRP:I/O 系統全貌
本文是從根本解說 Windows I/O 系統的系列文章第 1 回,透過圖解整理物件管理員的名稱空間、驅動程式・裝置・檔案這三種物件、IRP 的生命週期,直到 CloseHandle 幕後的機制。
-
睡眠・休眠・Modern Standby 與長時間執行的應用程式 ── 用設計預防「半夜停止運轉」
本文將從 S3 睡眠、休眠、Modern Standby 的差異出發,整理長時間執行的 Windows 應用程式「早上一看才發現已經停止」的原因,並解說睡眠期間計時器與 TCP 連線的行為,以及透過 SetThreadExecutionState 進行抑止的做法。
-
網路磁碟機與 UNC 路徑的陷阱 ── 業務應用程式處理檔案伺服器(共用資料夾)的實務
整理業務應用程式對共用資料夾進行輸出・監控時常見的麻煩。說明磁碟機代號(Z:)為何無法從服務中看到、各執行帳戶所需的權限、錯誤 1219,以及 FileSystemWatcher 的注意事項。
-
Process Monitor(ProcMon)實戰指南 ── 在10分鐘內找出「設定未被讀取」「ACCESS DENIED」的原因
「明明已經修改了設定檔,卻沒有生效」「昨天還能正常運作,今天卻無法啟動」──在動手修改原始碼之前,Process Monitor(ProcMon)能從檔案、登錄檔存取的實際情況中找出原因。本文從不具調查現場的角度,解說 Filter 的實務用法、NAME NOT FOUND、ACCESS DENIED、SHARI...
-
用 PerfView 與 dotnet-trace 找出「變慢」的原因 ── .NET 效能調查實務入門
當商用應用程式「變慢」「CPU 卡住不動」「偶爾當掉」時,該用哪個工具看什麼?本文整理 PerfView 與 dotnet-trace 的角色分工、CPU 取樣的讀法(inclusive/exclusive)、用 ThreadTime 調查阻塞時間,以及與 EventSource 自訂事件組合使用,涵蓋實務上的效...
-
用 WinDbg + SOS 解讀當機傾印檔 ── 收集之後的實務分析入門
本文說明如何用 WinDbg 與 SOS 擴充功能實際讀取已收集的 Windows 當機傾印檔。內容涵蓋符號路徑設定、以 !clrstack・!pe・!dumpheap -stat・!gcroot 追蹤例外與記憶體洩漏的方法、原生當機的 !analyze -v,以及與 dotnet-dump analyze 的使...
-
Windows 應用程式因程式錯誤的例外掉下也要確實留下日誌 - 不賭 in-process 的設計與 WER / 最終日誌 / 監視程序的最佳實踐
整理 Windows 應用程式因預期外例外或程式錯誤掉下時,如何同時保留通常時序日誌、最終當機標記與 WER LocalDumps 等多層證跡的最佳實踐。並說明在 .NET、WinForms、WPF、native C++ 等各框架上不該過度信任 in-process 處理器,而應將壓縮與上傳放到重啟後或別程序執行...