Я изменяю наши компоненты VCL так ссылки на приложение конечного пользователя на наши dcu файлы, вместо того, чтобы создать наш исходный код каждый раз. У нас есть все работа, но я хочу, чтобы отладчик остановился на коде пользователя, когда исключение повышено. Сначала это остановилось бы в нашем dcu и открыло бы окно CPU. Я смог предотвратить это путем удаления информации об отладке из dcu файлов. Но теперь это все еще не останавливается в пользовательском коде (как библиотеки DevExpress, и другие делают).
Следующий скринкаст является коротким примером. В первый раз я вызываю исключение в коде DevExpress, и отладчик правильно останавливается в моем событии кнопки. Во второй раз я вызываю исключение в своих компонентах, но отладчик не имеет моего события кнопки на стеке вызовов и не показывает мне, где проблема была. Какие-либо идеи, почему?
http://screencast.com/t/NjhlOTRk
В настоящее время создавая DCU с этими опциями:
-$W+ -$D- -h -w -q
Обновление: методы TDataSet, промежуточные мой компонент и событие кнопки, кажется, вызывают это поведение. Если я вместо этого называю прямой метод своей таблицы, я получаю ожидаемое поведение. Я предполагаю, что нет ничего, что я могу сделать об этом, но мне все еще любопытно, почему это происходит.
Если исходный код построен вместо dcu, что-то не так в конфигурации.
Dcus должен находиться в пути поиска, а источник - в пути просмотра.
Таким образом, компилятор не может не использовать DCU, и вы все равно можете отлаживать.