Delphi: как отладить проблемы, связанные с проверкой подлинности Windows? - PullRequest
0 голосов
/ 12 апреля 2011

Я заметил ошибку на стороне клиента, которую я не могу воспроизвести.Он на 99% связан с аутентификацией MS SQL Server в Windows.

Как можно отладить приложение, если используется аутентификация Windows?

Возможно ли (и если да, как) использовать удаленноеотладчик (я никогда не пробовал)?

В качестве альтернативы я могу сделать специальную сборку, которая регистрирует ошибки в файле.

Ответы [ 2 ]

2 голосов
/ 12 апреля 2011

Всегда регистрируйте свои ошибки с полной трассировкой стека, чтобы дать вам точное представление о том, где произошла ошибка.Вы можете использовать что-то вроде MadExcept, которое позволяет пользователю отправлять вам журнал ошибок со всеми соответствующими данными, добавляемыми, когда это происходит.

При отладке ошибок Windows API единственным важным элементом информации является код возврата API, которыйСам API возвращается или вы можете получить его через функцию GetLastError.Успех обычно равен нулю (но не всегда) и содержит ошибку в некотором положительном целочисленном (DWORD) коде.Просто посмотрите на MSDN, что это значит.Вы идете оттуда.Я уверен, что только сам код ошибки возврата даст вам достаточно информации (вместе с трассировкой стека и т. Д.) О том, что не так.

Если нет, то необходим более подробный анализ.Затем вы можете попытаться реплицировать окружение пользователя или выполнить удаленную отладку приложения.

О, и обратите внимание, что API-интерфейсы Windows не вызывают исключений.Вы несете ответственность за проверку кода возврата и самостоятельное поднятие исключения, если считаете это необходимым.Это старый стиль "функционального типа Си" программирования.

РЕДАКТИРОВАТЬ:

Если вы ищете простое и бесплатное решение, вы можете посмотреть на SimpleLog ,логирование решение мое собственное.Но MadExcept намного лучше и полон разных вариантов.

1 голос
/ 13 апреля 2011

Вы можете использовать удаленный отладчик для отладки приложения, работающего на хосте, отличном от IDE, но для этого требуется:

  • Удаленный отладчик установлен на целевой машине
  • Сборка отладкии удаленные символы на целевом компьютере

Если ваш клиент разрешил использовать удаленный отладчик.ИМХО, всегда полезно иметь какой-то переключатель приложения (параметр командной строки, запись в реестре и т. Д.), Который позволяет подробно регистрировать ошибки входа в систему при необходимости (хотя остерегайтесь безопасности).

Другие вариантыиспользовать OutputDebugStr, а затем использовать инструмент, подобный DebugView SysInternals, чтобы получить вывод.Также имеется модуль для записи вывода в Process Monitor SysInternal.

...