2010-04-07 21 views
2

我想了解如何啓用(&使用)Borland的WARN & TRACE宏。如何啓用BDS2006的C++ WARN&TRACE宏

我的出發點是此鏈接: http://bcbjournal.org/articles/vol2/9809/Debugging_with_diagnostic_macros.htm?PHPSESSID=37bf58851bfeb5c199d1af31d7b2e7ff

然而,這似乎是BCB5,而不是2006年的Borland Developer Studio中。

  • 我設置兩個定義(__WARN & __TRACE)
  • 我已經包含.h文件()
  • 我已經添加了一些宏,和一切編譯&鏈接罰款。

但是,當我運行應用程序(在DEBUG模式下),沒有調試輸出文件被創建。

我在這裏錯過了什麼?

+0

你看看在checks.h頭,看它是否仍然使用相同的宏,以使跟蹤宏? – 2010-04-07 08:22:34

+0

是的,checks.h具有相同的兩個宏定義。 DiagGroups有一些問題,但我不確定這是否相關。 – Dave 2010-04-07 08:28:03

回答

1

自從我使用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沒有編譯到其中的所需函數/類。因此,以下是值得研究的:

  1. OutputDebugString API。這具有以下優點:使用此API的任何監視器程序都可以從正在調試的程序接收調試消息字符串。
  2. xUnit測試框架。 Google Test值得一試。
  3. ,當然你的標準集成IDE調試器:P