本地調試繪圖密集型程式(如 OnPaint 中逐行畫線)時,每次斷點觸發導致 IDE 取得焦點,視窗失去焦點觸發 WM_PAINT 重繪,畫面內容閃爍、丟失,無法觀察中間繪圖狀態。遠程調試將被調試程式運行在另一台電腦(Remote PC),開發機(Host PC)只負責符號解析、斷點控制,完美解決「調試干擾 UI」問題。
| 角色 | 機器 | 必備文件/設置 |
|---|---|---|
| Remote PC | 實際運行被調試程式 |
|
| Host PC | 運行 VC6 IDE |
|
MSVCMON.EXE,選擇 Connect,等待連線。Z:\debug\test.exe (對應 Remote PC 的映射路徑)。Z:\debug。test.exe 並附加調試器。首次可能彈窗詢問各 DLL 符號表位置,指向 Host PC 對應的 System32 或 VC 安裝目錄即可。void CChildView::OnPaint() {
CPaintDC dc(this);
dc.MoveTo(0,0); // 斷點 1
dc.LineTo(100,10); // 斷點 2
dc.LineTo(100,0); // 斷點 3
dc.LineTo(200,10); // 斷點 4
}
本地調試時,每次斷點返回 IDE,視窗失去焦點 → 系統發送 WM_PAINT → 畫面清空重繪,只能看到最終結果。
遠程調試時,Remote PC 視窗始終保持前景、焦點不變,Host PC 斷點暫停時畫面凍結,**可清晰看到每一步 LineTo 後的畫面狀態**(第一條線、第二條線...)。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MachineDebugManager 權限。.exe、.pdb、.dll 必須**完全一致** (同一次 Build 輸出)。建議在 Host PC Build 後,直接複製整個 Debug 目錄到共享資料夾。printf,可在遠程程式中用 OutputDebugString 配合 DbgView (Sysinternals) 在 Remote PC 抓取。MSVCMON.EXE 通訊端口 (動態 RPC 端口範圍),或暫時關閉防火牆測試。C:\Windows, C:\Program Files\Microsoft Visual Studio),大幅減少符號路徑映射麻煩。MSVCMON.EXE 加入 Remote PC 啟動項,開機自動監聽。遠程調試是解決「調試器干擾被調試程式 UI 狀態」的銀彈之一,掌握它能讓你在繪圖引擎、遊戲循環、即時影像處理等領域如魚得水。