偵錯和追蹤設備
Windows Sockets 2 應用程式開發人員必須在下列位置隔離 Bug:
- 應用程式。
- Ws2_32.dll或其中一個相容性填充碼 DLL。
- 服務提供者。
Windows Sockets 2 透過數個元件和功能來解決這項需求:
- Windows Vista 和更新版本的 Winsock 追蹤整合支援。
- Windows Vista 上特別設計之 Ws2_32.dll 的偵錯版本。
- 用於 Windows Server 2003 和 Windows XP 的個別基本偵錯和追蹤設施。
使用 Windows 事件追蹤的 Winsock 追蹤
Windows Vista 和更新版本包含使用 Windows 事件追蹤的 Winsock 追蹤 (ETW) 整合支援。 這是追蹤 Windows Vista 和更新版本上 Winsock 呼叫的慣用方法。 使用 ETW 的 Winsock 追蹤是輕量型的,適用于零售版本的 Windows。 不需要額外的軟體或元件。 此功能只需要在 Windows Vista 和更新版本上啟用。 如需詳細資訊,請參閱 Winsock 追蹤 主題。
使用偵錯版本的 Ws2_32.dll
Windows Vista 和 Winsock 追蹤上 Ws2_32.dll 偵錯版本的組合,可讓監視 Windows Sockets 2 API 或 SPI 的所有程序呼叫,並受到某些程度的控制。
如果 Windows Vista 的 Microsoft Windows 軟體發展工具組版本 (SDK) 安裝到預設位置,則各種架構的偵錯版本 Ws2_32.dll 位於下列資料夾之下:
C:\Program Files\Microsoft SDKs\Windows\v6.0\NoRedist
應該使用符合您所測試 Windows 版本和 Service Pack 版本的已核取版本 Ws2_32.dll 。 請注意,安全性修補程式可能已套用,以更新測試系統上 的Ws2_32.dll 。 Windows SDK for Windows Vista 和舊版平臺軟體發展工具組 (SDK) DVD/CD 訂用帳戶包含各種 Windows 版本的已檢查組建。 您應該使用與所測試系統上所使用的零售版本相同的已核取版本 Ws2_32.dll 。 另請注意,在核取的組建下執行的行為與使用零售組建執行的行為不相同。
注意 Windows SDK for Windows Server 2008 和更新版本不再包含Ws2_32.dll的特殊偵 錯 版本。 開發人員應該改用 ETW 的 Winsock 追蹤,因為此功能不需要偵錯組建。
Windows Server 2003 和 Windows XP 上的 Winsock 偵錯和追蹤設施
Windows 8和Windows Server 2012之前的舊版 Windows 支援個別的基本偵錯和追蹤功能,其中包含作為 Windows SDK 和舊版平臺 SDK 的範例。 偵錯/追蹤設施應該只能在 Windows Server 2003 和不支援 Winsock 追蹤的 Windows XP 上使用。
如果 Windows SDK for Windows 7 安裝到預設位置,此基本 Winsock 追蹤功能會安裝在下列資料夾中:
C:\Program Files\Microsoft SDKs\Windows\v7.0\Samples\NetDs\winsock\dt_dll
此資料夾中 的DbgSpec.doc 檔案提供此基本追蹤設施的檔。 dt_dll 資料夾中的範例程式碼必須編譯為使用此設施。 開發人員可以使用原始程式碼來開發符合其特定需求的偵錯/追蹤 DLL 版本。
請注意,這個基本 Winsock 追蹤功能只適用于已安裝 的偵錯版本Ws2_32.dll 。 因此,您必須取得符合您所測試 Windows 版本和 Service Pack 版本的已核取版本 Ws2_32.dll 。
此基本dt_dll追蹤設施的限制是範例程式碼會針對每個 Winsock 函式呼叫使用全域鎖定 (關鍵區段) 。 因此,這項功能不適用於處理競爭條件。 範例程式碼需要大幅重寫,才能讓此追蹤設施適用于處理大部分真正的 Winsock 問題, (取代全域鎖定) 。 此範例程式碼可讓開發人員追蹤程式調用、程式傳回、參數值和傳回值。
開發人員可以使用這個基本機制來追蹤程序呼叫、程式傳回、參數值和傳回值。 參數值和傳回值可以在程序呼叫或過程傳回時改變。 如有需要,可以避免或重新導向程序呼叫。 透過存取此層級的資訊和控制,開發人員更能隔離應用程式中的問題、 Ws2_32.dll或服務提供者。
相關主題