Отладка приложений


         

Программа TraceView и безопасность


Программа TraceSrv полезна сама по себе, но утилита просмотра, которая отображает на экране операторы трассировки, на самом деле улучшает ее. Я написал TraceView на языке Visual Basic, потому что это было довольно просто сделать. Если посмотреть на ее исходный код, то можно убедиться, что ничего особенного в нем нет.

Я попытался сделать TraceView немного более полезной, чем простой редактируемый элемент управления, добавив к ней панель инструментов, панель состояния, поддержку сохранения и восстановления позиции окна, сохранение файлов, поиск вперед и назад, и реализовал для окна возможность всегда оставаться наверху. Чтобы облегчить локализацию программы, все строки сохраняются в файле ресурса. Не буду углубляться в загрузку строк ресурса, но отмечу, что пришлось модифицировать сгенерированную функцию LoadResStrings (переименованную В LoadFormResStrings) так, чтобы она уведомляла пользователя о том, какие элементы ресурса не были загружены. Сначала TraceView работала прекрасно. Однако в ходе проверки различных способов присоединения TraceView к TraceSrv были выявлены некоторые проблемы. Если TraceView и TraceSrv располагались на одной машине, то Trace View могла соединяться с TraceSrv только тогда, когда она выполнялась как служба или как локальный сервер. TraceView могла также соединяться должным образом с TraceSrv, если TraceSrv выполнялась на другой машине как локальный сервер, использующий СОМ+-технологию. Однако когда я пробовал соединять TraceView с TraceSrv, выполняющейся на другой машине как СОМ+-служба, это всегда приводило к отказу, сопровождаемому VB-сообщением об ошибке "Run-time error -2147023071 (80070721) Automation Error" (Ошибка времени выполнения -2147023071 (80070721) Ошибка автоматизации). В файле WINERROR.H идентификатор (ID) этой ошибки выглядит так: RPC_S_SEC_PKG_ERROR, "A ' security package specific error occurred" (Произошла специфическая ошибка пакета защиты).

Этот идентификатор был мне незнаком, а попытавшись найти его в MSDN, я узнал только, что он определен в WINERROR.H и внесен в список приложений с системными ошибками.

Содержание  Назад  Вперед