Почему DebugHook не установлен в 1 в моей DLL-надстройке Delphi? - PullRequest
2 голосов
/ 18 июля 2009

Когда я запускаю надстройку COM Office из среды IDE Delphi 5 (используя любое из офисных приложений в качестве хоста), точки останова работают нормально (при использовании символов удаленной отладки и правильно настроенной выходной папки), но ни одно из исключений, не относящихся к delphi (например, нарушения доступа) в моем коде, не приводит к сбою IDE в этот момент. Вместо этого IDE останавливается при ручном повторном повышении в попытке ... за исключением оберток в любом из моих внешних методов безопасного вызова.

Я заметил, что по какой-то причине глобальный DebugHook был установлен в 0 (хотя, насколько я знаю, он всегда должен быть установлен в 1 при запуске из IDE). Более того, установка вручную значения 1 во время инициализации моей DLL фактически устраняет проблему: теперь среда IDE аккуратно останавливается на той строке, где мой экспериментальный (читай: дерьмовый) код вызывает исключение.

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

Ответы [ 2 ]

3 голосов
/ 19 июля 2009

Если по какой-то причине оценщик Delphi не может найти глобальный DebugHook, он не сможет установить это значение. Попробуйте скомпилировать / запустить DLL из IDE и установить «хост-приложение» в диалоговом окне «Run | Parameters» для приложения Office, из которого вы собираетесь вызывать вашу DLL. Возможно, это может быть ошибкой в ​​том, как оценщик использует символы удаленной отладки.

2 голосов
/ 19 июля 2009

В последних версиях Delphi в Debugger есть опция для "Отладка порожденных процессов" или что-то в этом роде. Эта опция присутствует в Delphi5 и установлена ​​ли она?

Не уверен, поможет ли это, потому что я не сталкивался с описанным вами поведением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...