Отладочная точка останова не работает только в модуле DataModule - Delphi - PullRequest
2 голосов
/ 17 июля 2009

Отладка точки останова прекрасно работает во всех остальных 38 единицах моей системы. Но в моем DataModule, который имеет + - 10.000 строк, delphi отключается после запуска F9 / F8 / F7. В любой части источника это подразделение, даже на обязательных шагах, таких как OnCreate, SQLConnection.Active: = true и т. Д. Деталь: отлично работает до + - 20 дней назад. Я использую D7 и все источники компонентов также. Спасибо Фелипе

Ответы [ 6 ]

4 голосов
/ 17 июля 2009

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

Далее, убедитесь, что вы случайно не отключили отладку в своем коде с помощью {$ D-} или {$ DEBUGINFO OFF}. Это может отключить отладочную информацию для одного устройства.

Кроме того, убедитесь, что вы включили встроенную отладку в Инструменты | Параметры | Параметры отладчика. Я знаю, вы сказали, что можете отлаживать в других местах, но не мешало бы убедиться, что встроенная отладка не была случайно отключена.

4 голосов
/ 17 июля 2009

Попробуйте сделать полную сборку (Shift + F9). Если это не сработает, то что произойдет, если вы имитируете точку останова в коде с помощью приведенного ниже?

asm int 3 end;
1 голос
/ 20 июля 2009

Я обнаружил эту проблему. Это странное поведение в Delphi7, которое ограничивает количество полей в разделе класса интерфейса между: type TDM = class (TDataModule) и приватным разделом. Я удалил некоторые поля (Поля DataSet (+ -40 полей)), и degub запускается снова. Я снова добавляю эти поля, и отладка не запускается. Я уверен, что это предел, потому что не важно, какие поля компонента я удалил. Я пробовал с несколькими полями, из разных таблиц, добавление, тестирование и удаление. Обидно, но это правда ... Спасибо за вашу помощь.

1 голос
/ 18 июля 2009

У меня смутная память о том, что отладка очень больших файлов в старом D7 глючила. Попробуйте разбить ваш большой модуль на несколько классов и, если вы можете отлаживать за пределами вашего модуля. Другим вариантом может быть отключение debuginfo в вашем большом файле, кроме раздела, который вы хотите отладить. Стоит попробовать.

0 голосов
/ 18 июля 2009

Фелипе, это устройство, которое не позволит вам отлаживать в DLL, которая перемещается в или из памяти? Я обнаружил при отладке DLL, что если я делаю что-то в исполняемом файле, который выполняет код в другой DLL или выгружает DLL, в которой находится проблемный модуль - Delphi отключит все точки останова. Обычно перезапуск Delphi и сохранение единственного экземпляра dll проблемного модуля в памяти - единственное решение этой проблемы.

Я сомневаюсь, что проблема в размере, так как у меня есть линейный блок 17k, который я регулярно отлаживаю.

0 голосов
/ 17 июля 2009

В блоге от есть некоторое время назад Стив Трефетен, объясняющий некоторые возможные причины , хотя, если вы скажете, что можете отлаживать другие модули, я сомневаюсь, что они будут применяться.

У нас была та же проблема с большим DataModule в Delphi 5, который не позволял нам отлаживать его, и отчасти объяснял это тем, что файл слишком велик для отладки, а Delphi не понравился. Когда мы перешли на Delphi 2007, мы смогли снова его отладить. Не знаю почему, ничего не изменилось (код мудрый).

...