Как я могу удержать большое количество вызовов OutputDebugString () от ухудшения моего приложения в среде Delphi 6 IDE?

Это случалось со мной не один раз и привело к потере многих часов в погоне за призраком. Как правило, когда я отлаживаю какой-то действительно сложный код, связанный с синхронизацией, я начинаю добавлять тонны вызовов OutputDebugString (), чтобы получить хорошее представление о последовательности связанных операций. Проблема в том, что IDE Delphi 6, похоже, может справляться только с этой ситуацией так долго. Я буду использовать конкретный пример, который я только что рассмотрел, чтобы избежать общих слов (насколько это возможно).

Я потратил несколько дней на отладку кода межпоточной блокировки семафоров вместе с кодом вычисления временных меток DirectShow, который вызывал серьезные проблемы. После устранения всех ошибок, которые я мог придумать, у меня все еще была проблема с Skype , на который мое приложение отправляет аудио.

Примерно через 10 секунд задержка между моим разговором и моим голосом из Skype на втором компьютере, который я использовал для тестирования, на дальнем конце разговора, начала расти. Примерно через 20-30 секунд задержка начала экспоненциально расти, и в этот момент у меня сработал код, который проверяет, не задерживается ли критическая секция слишком долго.

К счастью, было не слишком поздно, и, пройдя через это раньше, я решил прекратить непрерывную трассировку и отключил большую часть OutputDebugString (). К счастью, большинство из них было заключено в определение условного компилятора, так что это было легко сделать. Как только я это сделал, проблемы исчезли, и оказалось, что мой код работает нормально.

Таким образом, похоже, что среда IDE Delphi 6 действительно начинает тормозить, когда объем трафика OutputDebugstring () превышает некоторый порог. Возможно, это просто задача добавления строк в панель отладчика журнала событий, которая содержит все отчеты OutputDebugString (). Я не знаю, но я видел похожие проблемы в своих приложениях, когда TMemo или аналогичный элемент управления начинал содержать слишком много строк.

Что те из вас сделали, чтобы предотвратить это? Есть ли способ очистить журнал событий с помощью вызова какого-либо метода или, по крайней мере, способ ограничить его размер? Кроме того, какие методы вы используете с помощью условных определений, подключаемых модулей IDE или чего-то еще, чтобы справиться с этой ситуацией?

8
задан Peter Mortensen 3 September 2015 в 19:57
поделиться