Как отладить файл DLL в Delphi - PullRequest
6 голосов
/ 27 февраля 2009

Я разработчик, работающий над Visual C ++, но в моем проекте есть несколько Delphi компонентов. Мне нужно отладить компоненты Delphi, чтобы исправить некоторые проблемы.

Что необходимо для создания файла DLL при отладке, а затем начать отладку в Delphi?

Ответы [ 3 ]

20 голосов
/ 27 февраля 2009

В Delphi 7 вы бы сделали это:

Проект | Варианты | Компилятор | Отладка | Отладочная информация (проверка)

Тогда иди в Run | Параметры | Хост приложение и введите имя вашего exe.

Добавьте несколько точек останова в коде DLL и нажмите «Выполнить». Ваш exe-файл будет загружен, и вы сможете отлаживать части DLL в Delphi IDE.

Если ваш exe уже запущен, нажмите Run | Присоединить к процессу

- Я проверил это и обнаружил, что мне также нужно проверить «Включить символы удаленной отладки» на странице компоновщика параметров проекта в Delphi 7.

Мне удалось получить контрольную точку для удара, используя Run | Параметры, а также Run | Прикрепить к методам обработки. Созданная мной тестовая DLL имела одну функцию stdcall и динамически загружалась консольным приложением Visual C ++.

4 голосов
/ 27 февраля 2009

Мы используем это довольно часто (используя Delphi).

Обязательно:

  1. Включить все параметры отладки во всех проектах (файлы DLL). И отключить оптимизацию.
  2. Обязательно установите для хост-приложения правильный файл EXE.
  3. Сборка DLL файлов.

Теперь вы можете ставить точки останова как в dll, так и в exe. И запустите файл DLL из IDE. Он запускает файл EXE и останавливается на запрошенных точках останова.

Это даже работает, когда файлы DLL динамически связаны (если они выгружены, синие точки исчезают).

0 голосов
/ 27 февраля 2009

Метод, предложенный Gamecat, я использовал ранее.

Другой способ: у меня есть проект DLL, но я также делаю проект "испытательного стенда". Проект «стенда тестирования» имеет одну форму, которая может напрямую использовать код, который обычно используется в DLL.

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