Я тоже исследовал эту функцию отладки TRACE, так как использую набор инструментов Borland. Несколько вещей, которые я заметил, когда я это выяснил.
- Убедитесь, что
__TRACE
и __WARN
определены до #include <checks.h>
.
Вы также можете удалить #define __TRACE и __WARN из модуля перевода и вместо этого передать его в bcc32, используя во время компиляции параметр -D macroname .
- _GetDiagGroupDef не разрешен для BDS2006. Похоже, что набор инструментов компилятора, который поставляется с BDS2006 и более поздними версиями, по-видимому, пропускает некоторые реализации функций и классов, которые использует check.h, в частности _GetDiagGroupDef. Я получаю неразрешенные ссылки от компоновщика при компиляции тестового примера, который использует check.h. Этого не происходит, когда я использую BCB 5.5.1. Используя grep / findstr, кажется, что check.cpp компилируется в библиотеку времени выполнения BCB5.5.1, но отсутствует в цепочке инструментов BDS2006. Я удивлен, что вы не столкнулись с той же проблемой, возможно, я не установил некоторые компоненты. Я нашел копию check.cpp из старого набора инструментов Borland здесь . Компиляция и компоновка, которые должны исправить неразрешенные ошибки.
- В руководстве говорится, что outdbg1.txt - это временный файл, и он отображается только в Borland IDE - чтобы этот файл действительно существовал, его необходимо сохранить. Это говорит о том, что их макросы TRACE / WARN на самом деле не выводят файл отладки. Вероятно, он выводит отладочную информацию в поток stderr.
Если это действительно так, то перенаправление потока stderr в файл должно дать то, что вы ищете. Скомпилируйте пример программы, затем запустите ее примерно так:
myprogram.exe 2> outdbg1.txt
В общем, вы, вероятно, захотите найти альтернативные инструменты, которые помогут вам в процессе отладки. К сожалению, представленные здесь макросы TRACE & WARN плохо документированы, и для более поздних версий набора инструментов borland / embarcadero он даже не работает должным образом, потому что в rtl не собраны необходимые функции / классы. Поэтому стоит изучить следующее:
- API OutputDebugString. Это дает преимущество в том, что любая программа монитора, использующая этот API, может получать строки отладочных сообщений от отлаживаемой программы.
- xUnit Testing Framework. Google Test стоит проверить.
- и, конечно, ваш стандартный интегрированный отладчик IDE: P