[英]Extending functionalitty (aka Modifying) visual studio C/C++ compiler
我想擴展Visual Studio中使用的C / C ++編譯器的功能。 基本上,我想編寫一個工具來解析c / c ++代碼並打印出所有分支(如果check,break語句,for / while循環等)在代碼中發生的位置。 然后,我想在執行代碼時使用此信息,以便為給定的測試用例顯示未執行的代碼區域。
可能嗎? Microsoft是否提供了向其編譯器/調試器添加功能的任何方法?
- 謝謝
您通常不會通過修改編譯器來執行此操作,並且在任何情況下都不能使用Microsoft的編譯器。 相反,您將編寫一個預處理器來檢測代碼(在條件節點處插入額外的代碼以跟蹤控制流),然后編寫一個處理跟蹤數據以確定運行的工具。
Visual Studio本身具有一個加載項體系結構 ,允許您以您描述的方式在編輯器中呈現此數據。
檢測本身並不簡單 - 它需要能夠解析所有有效的C和C ++代碼,並能夠保留原始行號信息,以便可以顯示未經檢測的代碼。 為了完整性,它必須能夠使用三元?:運算符對代碼進行重新分解,以便可以檢測其流程。 檢測代碼也需要是標准預處理器而不是原始源代碼輸出的代碼 - 使行號跟蹤更加困難(盡管預處理器已經管理了與調試器一起使用的代碼)。
使用預處理器來檢測代碼。 代碼應該在運行時吐出文件。 在斷點處,使用調試器API + visual studio addin機制處理此信息和“灰顯”代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.