我试图找出如何启用(和使用)Borland的WARN&TRACE宏。

我的起点是这个链接:
http://bcbjournal.org/articles/vol2/9809/Debugging_with_diagnostic_macros.htm?PHPSESSID=37bf58851bfeb5c199d1af31d7b2e7ff

但是,这似乎适用于BCB5,而不适用于2006 Borland Developer Studio。

  • 我设置了两个定义(__WARN&__TRACE)
  • 我已经包含了.h文件()
  • 我添加了一些宏,所有内容均可编译和链接。

  • 但是,当我运行应用程序时(在 Debug模式下),没有创建调试输出文件。

    我在这里想念什么?

    最佳答案

    由于我使用Borland的工具链,因此我也在研究此调试TRACE功能。我在弄清楚这一点时注意到了几件事。

  • 确保在__TRACE之前定义了__WARN#include <checks.h>
    您还可以从翻译单元中删除#define __TRACE和__WARN,而在编译过程中使用-D宏名选项将其传递给bcc32。
  • BDS2006尚未解析
  • _GetDiagGroupDef。似乎BDS2006和更高版本随附的编译器工具链似乎缺少check.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
  • 10-08 11:51