Точка останова отладки отлично работает на всех остальных 38 модулях моей системы. Но в моем модуле DataModule, который имеет + - 10.000 строк, delphi отключается после запуска с помощью F9 / F8 / F7. В любой части исходного кода этого модуля, даже на таких непростых шагах, как OnCreate, SQLConnection.Active: = true и т. Д. Подробности: отлично работает до + - 20 дней назад. Я использую D7, и у меня также есть все исходники компонентов. Спасибо Фелипе
Точка останова отладки не работает только в модуле DataModule - Delphi
Ответы (6)
Попробуйте сделать полную сборку (Shift + F9). Если это не сработает, что произойдет, если вы смоделируете точку останова в коде с помощью нижеприведенного?
asm int 3 end;
Проверьте наличие нескольких копий исходного файла для модуля данных. Иногда код, который, как вы думаете, вы запускаете, не является кодом, который видят компилятор и отладчик.
Затем убедитесь, что вы случайно не отключили отладку в коде с помощью {$ D-} или {$ DEBUGINFO OFF}. Это может отключить отладочную информацию для одного устройства.
Также убедитесь, что вы включили интегрированную отладку в Инструменты | Параметры | Параметры отладчика. Я знаю, вы сказали, что можете отлаживать и в других местах, но не помешает убедиться, что встроенная отладка каким-то образом случайно не отключилась.
Я смутно помню, что отладка очень больших файлов была ошибочной в старом D7. Попробуйте разбить ваш большой модуль на несколько классов и подумайте, если вы можете отлаживать вне своего модуля. Другой вариант - отключить debuginfo в большом файле, кроме раздела, который нужно отлаживать. Стоит попробовать.
Я обнаружил эту проблему. Это странное поведение в Delphi7, которое ограничивает количество полей в разделе класса интерфейса между: type TDM = class (TDataModule) и частным разделом. Я удалил некоторые поля (поля набора данных (+ -40 полей)) и снова запустился degub. Я снова добавляю эти поля, и отладка не запускается. Я уверен, что это предел, потому что не важно, какие поля компонентов я удалил. Я пробовал с несколькими полями, тоже из разных таблиц, добавляя, тестируя и удаляя. Обидно, но это правда ... Спасибо за помощь.
Есть сообщение в блоге от Стива Трефетена, некоторое время назад, с объяснением некоторых возможных причин, хотя если вы говорите, что можете отлаживать другие модули, я сомневаюсь, что они применимы.
У нас была такая же проблема с большим модулем DataModule в Delphi 5, который не позволял нам его отлаживать и как бы списывал это на то, что это слишком большой файл для отладки, а Delphi это не нравилось. Когда мы перешли на Delphi 2007, мы снова смогли отладить его. Не уверен, почему, ничего не изменилось (с точки зрения кода).
Фелипе, это модуль, который не позволяет вам отлаживать dll, перемещаемую в память или из нее? При отладке dll я обнаружил, что если я что-то сделаю в исполняемом файле, который выполняет код в другой dll или выгружает dll, в которой находится проблемный блок, - Delphi отключит все точки останова. Обычно перезапуск Delphi и сохранение в памяти единственного экземпляра dll проблемного модуля - единственное решение этой проблемы.
Я сомневаюсь, что проблема в размере, поскольку у меня есть линейный блок 17k, который я регулярно отлаживаю.