C++不用工具,如何檢測內存泄漏、指針越界等問題


C++ 不試用工具如何檢測內存泄漏,指針越界等問題?

  簡單的想法是修改共享庫,以達到控制內存操作功能,如malloc/free等內存管理函數、memcpy/strcpy/memset等內存讀取函數和指針運算等,自主管理內存,查看異常。

Valgrind對可執行文件進行修改,所以不需要重新編譯程序。但它並不是在執行前對可執行文件和所有相關的共享庫進行一次性修改,而是和應用程序在同一個進程中運行,動態的修改即將執行的下一段代碼。

Valgrind是插件式設計的。Core部分負責對應用程序的整體控制,並把即將修改的代碼,轉換成一種中間格式,這種格式類似於RISC指令,然后把中間代碼傳給插件。插件根據要求對中間代碼修改,然后把修改后的結果交給core。core接下來把修改后的中間代碼轉換成原始的x86指令,並執行它。

  系統級HOOK也可以做到。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM