我目前正在一個已經很久的bug的項目,現在我懷疑,除其他事項外,代碼中存在指針錯誤。C++發現指針錯誤
該程序是使用COM以本地C++編寫的,並使用進程外COM服務器。
任何人都可以給我一些提示,作爲如何去尋找這些錯誤?
是否有具體的事情要記住,如何做到這一點,等等...
我目前正在一個已經很久的bug的項目,現在我懷疑,除其他事項外,代碼中存在指針錯誤。C++發現指針錯誤
該程序是使用COM以本地C++編寫的,並使用進程外COM服務器。
任何人都可以給我一些提示,作爲如何去尋找這些錯誤?
是否有具體的事情要記住,如何做到這一點,等等...
我在這裏有幾個建議:
希望這會有所幫助。你也可以嘗試諸如遠程調試等等,或者用Vtune或其他東西來測試代碼,但是讓我們在開始時保持簡單。
Arpan
這是一個非常廣泛的主題。
你可以做的最好的事情就是使用一個工具和跟蹤平臺,它允許你查看所有的分配,內存泄漏和內存損壞,但是這可能非常難以設置和耗時,這取決於你的大小項目和你的構建系統的複雜性。
你也可以插件自定義的分配和釋放碼(看看微軟的DEBUG_NEW(我認爲)的一個例子。
對於特定的COM-跟蹤我不知道是否有任何已有的解決方案。如果你可以使用自己的ATL插件/替換/擴展智能指針類(如CComPtr)
你可以嘗試使用像AQTime,DevPartner或IBM Rational Purify這樣的內存分析器。其他
BoundsChecker有一個名爲Wait for Process的運行模式。這使您可以讓BC等待,直到您的DLLHOST進程啓動並在進程啓動時連接BC核心。對於指針錯誤,您可以使用BC的最終檢查模式。這意味着你添加編譯時本地儀器,如果你測試整個應用程序,這可能會令人生厭,但如果你只是測試你的COM服務器及其依賴關係,那麼它可以非常有效。 MF Developer下的http://www.microfocus.com有關DPS 10.5在2月初發布的消息。免責聲明,我在DevPartner團隊工作,所以認爲這是我無恥的插件。我們對10.5版本及其64位支持的意圖是確保我們可以處理純粹的C++ x64應用程序,其次是混合的.NET應用程序,以及純粹的.NET應用程序可以在BC之前處理。該套件中的其他配置文件以另一種方式發展,純.NET最重要。希望您找到10.5適合您的開發環境和故障排除需求。
什麼樣的「指針錯誤」? – jalf 2010-06-07 13:06:15