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

       

TraceSrv и DCOMCNFG


Для того чтобы разрешить доступ к TraceSrv через сеть, не следует запускать ее как службу, (т. к. после запуска TraceSrv работает как удаленный СОМ+-сервер). Для отладки такая гибкость очень удобна, потому что, запустив TraceSrv в отладчике, можно наблюдать за присоединением к ней клиентов, а при необходимости выполнять и отладку. Мне удобнее всего было, когда и клиентское приложение, и TraceSrv выполнялись под отладчиками на своих машинах. Когда какое-то из приложений достигает точки прерывания, следует приостановить и другое (чтобы избежать любых возможных проблем с тайм-аутами). Я всегда компилировал Visual Basic-клиент до уровня "родного" кода и запускал его под отладчиком Visual C++. Эта тактика гарантировала, что по достижении клиентом точки прерывания он "намертво" останавливается в отладчике. Причина, по которой нельзя остановить клиент, выполняющийся под VB-отладчиком, заключается в том, что с TraceSvr на самом деле соединяется не отлаживаемое приложение, а сам VB-отладчик.

Для того чтобы использовать TraceSrv через сеть, нужно выполнить программу DCOMCNFG.EXE, корректно прописывающую данные о ней в реестр. Первое, что нужно сделать — выполнить для своей машины установку СОМ+-СВОЙСТБ по умолчанию. Перед изменением СОМ+-свойств необходимо проверить с сетевым администратором умалчиваемые СОМ+-свойства в сетевом окружении всей фирмы. Если вы работаете в небольшой сети и обладаете привилегиями суперпользователя, то можно применить установки, перечисленные в табл. 11.1 и, наилучшим образом работавшие на всех машинах, на которых я тестировал TraceSrv.

Таблица 11.1. Умалчиваемые установки DCOMCNFG

На вкладке Default Properties в DCOMCNFG



Enable Distributed COM Установлен (флажок) 

On This Computer

Default Authentication Level Connect

Default Impersonation Level Identify

На вкладке Default Security в DCOMCNFG.EXE

Default Access Permissions     Everyone (Bee)        Allow Access (Доступ разрешен)

                                                  INTERACTIVE              Allow Access 

                                                 NETWORK                   Allow Access 

                                                 SYSTEM                       Allow Access

Default Launch Permissions       Administrators                    Allow Launch 

                                                     (Администраторы)           (Запуск разрешен)

                                                          Everyone                      Allow Launch

                                                        INTERACTIVE              Allow Launch

                                                         NETWORK                  Allow Launch 

                                                        SYSTEM                      Allow Launch

Default Configuration                  Administrators     Full Control Permissions 

                                                                                 (Полное управление)

                                                  CREATOR            OWNER Full Control 

                                                  Everyone               Read (Чтение)

                                                 INTERACTIVE    Special Access (Специальный 

                                                                              доступ. Включены все значеия 

                                                                               за исключением Create Link, 

                                                                              Write DAC и Write Owner)

                                                  SYSTEM              Full Control


После регистрации TraceSrv ( либо как части построения, либо с ключом -RegServer командной строки) запустите DCOMCNFG, выберите TraceSrv (или Trace Class в Windows 98) и нажмите кнопку Properties. Я изменял установки только на вкладке Location. Для того чтобы TraceSrv выполнялась только на локальной машине, установите флажок Run Application On This Computer и сбросьте другие. Если требуется выполнять TraceSrv только на другой машине, то включите флажок опции Run Application On The Following Computer и укажите сервер. (Обратите внимание, что утилита DCOMCNFG позволит поместить на панель имя текущего компьютера, но тогда она не будет создавать сервер.) Чтобы избежать многих неприятностей, дважды проверьте, что все опции на вкладке Security установлены для использования по умолчанию.

Вообще-то не рекомендуется изменять установки в DCOMCNFG — параметры безопасности (security) и идентичности (identity), но если вы это сделали и TraceSrv больше не запускается, выполните утилиту из командной строки с ключом -unRegServer — реестр будет очищен, и можно регистрировать TraceSrv заново (см. выше). Автоматическая регистрация (registration) и "выписка" (unregistration) — удобные свойства ATL.

Теперь вы знаете, как проектировалась, строилась и устанавливалась TraceSrv, и, вероятно, думаете, что эта тема исчерпана. Сначала я тоже так думал, но затем, когда уже начал работать с TraceSrv, обнаружил некоторые действительно неприятные ошибки.



Содержание раздела