自從我使用Borland的工具鏈以來,我正在研究這個調試TRACE功能。我注意到了一些事情,但我知道這一點。
- 確保
__TRACE
和__WARN
#include <checks.h>
之前定義。 您還可以從編譯單元中刪除#define __TRACE和__WARN,並在編譯期間使用-D macroname選項將其傳遞到bcc32。
- _GetDiagGroupDef尚未解決BDS2006。似乎BDS2006和更高版本附帶的編譯器工具鏈似乎缺少checks.h使用的某些函數和類實現 - 特別是_GetDiagGroupDef。編譯使用checks.h的測試示例時,我從鏈接器中獲得未解析的引用。這在我使用BCB 5.5.1 btw時不會發生。使用grep/findstr它會出現checks.cpp被編譯到BCB5.5.1的運行時庫中,但它從BDS2006工具鏈中缺失。我很驚訝你沒有遇到同樣的問題,也許我沒有安裝一些組件。我從舊版Borland工具鏈here中發現了一個checks.cpp副本。編譯和鏈接應該修復未解決的錯誤。
- 本教程指出outdbg1.txt是一個臨時文件,它只在borland IDE中顯示 - 爲了使該文件實際存在,您必須保存該文件。這向我建議他們的TRACE/WARN宏不會輸出一個調試文件。它可能將調試信息輸出到stderr流。
如果確實如此,那麼重定向stderr流到一個文件應該給你想要的。編譯示例程序,然後像這樣運行:
myprogram.exe 2> outdbg1.txt
所有的一切,你可能需要尋找替代工具,以幫助你在調試過程中。不幸的是,這裏提供的TRACE & WARN宏的記錄很差,而且對於borland/embarcadero工具鏈的更高版本,它甚至不能正常工作,因爲rtl沒有編譯到其中的所需函數/類。因此,以下是值得研究的:
- OutputDebugString API。這具有以下優點:使用此API的任何監視器程序都可以從正在調試的程序接收調試消息字符串。
- xUnit測試框架。 Google Test值得一試。
- ,當然你的標準集成IDE調試器:P
你看看在checks.h頭,看它是否仍然使用相同的宏,以使跟蹤宏? – 2010-04-07 08:22:34
是的,checks.h具有相同的兩個宏定義。 DiagGroups有一些問題,但我不確定這是否相關。 – Dave 2010-04-07 08:28:03