我想了解如何使用Win32 Debugging API實現代碼覆蓋工具。如何使用Win32實現代碼覆蓋工具調試API
我的想法一直利用Win32 Debugging API啓動在調試模式下的過程 - 並跟蹤已執行了什麼CPU指令。在跟蹤完所有CPU指令後,我會使用映射文件將其映射到執行的源代碼行。
據我瞭解,將有知道指令已被執行什麼CPU的兩種方式。
將推出在調試模式下的過程 - 設置在單步模式中的所有線程,並讓調試應用筆記已被執行
會做出更聰明的做法都說明,你將更多地瞭解x86指令,並基本用斷點替換下一個分支指令。然後跟蹤兩個斷點之間的增量指令。 -
更新由邁克爾的迴應引發了新的建議方案:
與映射文件開始,插入斷點每行的開頭,讓每次出現斷點時都會通知調試框架。
開始與地圖文件 - 二進制指令插入一個「鉤」是被調用在每個源線的入口 - 避免通過調試框架回調。
使用VM技術 - 如VMware找出特定過程的指令被執行的 - 我不完全理解這種方法...
可能有人驗證方法之一或者可能會提出一個替代方案 - 請注意,用例是逐行代碼覆蓋而不是性能分析 - 因此我們需要知道每個單一源代碼行是否被訪問過。
我的主要目標(雖然沒有特別的計劃到位......)將是主要創建德爾福簡單的代碼覆蓋工具。
謝謝!
使用Visual Studio Profiler是不可能的?它可以測試你的二進制文件並提供代碼覆蓋。 – 2009-04-07 16:06:45
謝謝 - 但不幸的是,對於Delphi應用程序來說,這是個問題... :) – 2009-04-07 16:10:56