Как остановить отладчик от перехода на модули, поставляемые Delphi?
Отладчик входит в исходный код при ошибках (как в F7), но я хочу восстановить нормальный рабочий режим, когда базовые DCU Delphi (библиотека) скомпилированы только в мой код, а источники не используются при отладке.
Например, при ошибке в моей программе отладчик переходит в Controls.pas, в TControl.Click
, Обычный случай (сразу после установки) - Delphi, чтобы перешагнуть через эти методы.
Должен ли я перекомпилировать Controls.pas без отладочной информации? Если так, то как?
Я расширил эту тему с дополнительной информацией для лучшего понимания:
Мы используем Delphi6 Prof. что есть проблемы с мышью (код системной ошибки 5). Таким образом, мы хотим перекомпилировать в Controls.pas, чтобы заменить код получения Mouse Position. Затем:
- Я создал для него папку: "c:\D\Common\Delphi_Patches\Delphi_6\"
- Я положил оригинальный Controls.pas в него.
- Я изменил Controls.pas, заменил код получателя положения.
- Я установил путь к библиотеке Delphi, установил первую папку в "c: \ D \ Common \ Delphi_Patches \ Delphi_6 \"
С помощью этих шагов я могу скомпилировать исходный код с безопасным для мыши кодом.
Хорошо, но тогда Delphi каждый раз входит в Controls.pas на F7, и при любых исключениях - это очень "злобно".
Независимо от того, что я удалил "Controls.pas" из пути к библиотеке - тогда отладчик находит для него оригинальный "Controls.pas" и открывает его...:-(
Мы не используем "Использовать отладочные DCU-ы" в любых кодах.
Я пытался удалить "Отладочную информацию" из параметров компилятора, но это не имеет значения, Delphi открывает оригинальные Controls.pas...
Поэтому я ищу путь к Delphi, не заходите в "Controls.pas", а используйте мой dcu...
Я надеюсь, что это обеспечит лучший контекст для понимания проблемы.
4 ответа
Как я вижу решение:
создать проект использует только новый Controls.pas.
снимите опцию "Отладочная информация" в опциях компилятора.
построить dcu
поместите dcu в папку библиотеки
скрыть новый Controls.pas из этой папки библиотеки.
С этим трюком я не могу "шагнуть" в control.pas.
С уважением: дд
Я думаю, что вам нужно Shift+Ctrl+F11 (инструменты / опции), затем в Compiler снимите флажок "Использовать отладочный DCU"... Тогда, если возникнет исключение, он не будет разбит на источники RTL или VCL.
Поскольку вы компилируете свою собственную версию модуля Delphi, вы можете отключить отладочную информацию в этом модуле. добавлять {$D-}
к исходному коду рассматриваемой единицы (единиц).
У меня была такая же проблема с Delphi XE8.
Вы можете снять галочку с "Project >> Option >> Compiling >> Use debug .dcus", и он продолжит трассировку в системный блок и так далее.
Я обнаружил, что лучший способ остановить это - открыть файл Application.dproj, который находится в формате XML. В нем вы можете изменить настройки следующим образом:
<PropertyGroup Condition="'$(Cfg_1_Win32)'!=''">
<DCC_AssertionsAtRuntime>false</DCC_AssertionsAtRuntime> <--- note false
<DCC_DebugDCUs>false</DCC_DebugDCUs>
<VerInfo_Locale>1033</VerInfo_Locale>
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
<DCC_RemoteDebug>false</DCC_RemoteDebug>
</PropertyGroup>