Как отладить компонент. gdb игнорирует бряк.

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Как отладить компонент. gdb игнорирует бряк.

Сообщение wofs » 29.10.2017 11:30:59

Доброго дня.
Есть Lazarus и установленный сторонний компонент FPSSpreadsheet.
При чтении некоторых файлов вылетает неизвесткая ошибка. Судя по стеку вызовов проблема возникает при попытке выполнить процедуру:
Код: Выделить всё
procedure TsSpreadOOXMLReader.ReadCell(ANode: TDOMNode; AWorksheet: TsWorksheet);

Но при попытке установить бряк на ее тело отладчик игнорирует ее.
Отсюда вопрос - возможно ли отладить стороннюю компоненту в отладчике?
Или единственный путь - добавить в процедуру свой код (например - запись лога), который будет локализовывать проблему и пересобрать компонент?

p.s. На днях пытался отловить ошибку в dbrgids.pas и обнаружил, что gdb тоже не может его отлаживать. Это особенность отладчика или я что-то делаю не так? В настройках компиляции "Без оптимизации", отладочная информация генерируется и отладочные символы не вырезаются из файла.
Аватара пользователя
wofs
постоялец
 
Сообщения: 379
Зарегистрирован: 05.10.2009 10:16:55
Откуда: Астрахань

Re: Как отладить компонент. gdb игнорирует бряк.

Сообщение zub » 29.10.2017 12:36:13

>>Отсюда вопрос - возможно ли отладить стороннюю компоненту в отладчике?
у меня проблем никогда не возникало.
Лазарус видит исходники компонента? т.е. если там умышленно сделать ошибку проект не соберется с руганью на нее?
zub
долгожитель
 
Сообщения: 2884
Зарегистрирован: 14.11.2005 23:51:26

Re: Как отладить компонент. gdb игнорирует бряк.

Сообщение wofs » 29.10.2017 16:26:54

zub писал(а):Лазарус видит исходники компонента? т.е. если там умышленно сделать ошибку проект не соберется с руганью на нее?

Да, и в стеке вызовов видно какие функции из компоненты вызывались перед исключением.
В самом приложении отладчик тоже работает без проблем.
А вот бряки в исходниках компоненты игнорирует. Lazarus транковый, 1.8.0rc5.
Аватара пользователя
wofs
постоялец
 
Сообщения: 379
Зарегистрирован: 05.10.2009 10:16:55
Откуда: Астрахань

Re: Как отладить компонент. gdb игнорирует бряк.

Сообщение zub » 29.10.2017 17:56:40

а если по ф7 построчно пойти зайдет внутрь компонентных исходников?
zub
долгожитель
 
Сообщения: 2884
Зарегистрирован: 14.11.2005 23:51:26

Re: Как отладить компонент. gdb игнорирует бряк.

Сообщение iskander » 29.10.2017 18:05:29

Транковый Lazarus это 1.9, но имхо дело не в Лазаре.
Чтобы бряки работали нужно скомпилировать пакет компонента с отладочной информацией.
iskander
энтузиаст
 
Сообщения: 590
Зарегистрирован: 08.01.2012 18:43:34

Re: Как отладить компонент. gdb игнорирует бряк.

Сообщение zub » 29.10.2017 18:25:39

>>Чтобы бряки работали нужно скомпилировать пакет компонента с отладочной информацией.
нет. в "нормальном режиме" (когда лазарь видит исходники пакета, а не только ppu) он компилируется вместе с проектом каждый раз. исключение - пакеты входящие непосредственно в состав компилятора - они компилируются в момент сборки компилятора.

Если лазарь видит исходники пакета (работает навигация по исходникам?), то предположу что ТС чета глючит - точки останова не работают потомучто туда не ппередается управление.

>>Но при попытке установить бряк на ее тело отладчик игнорирует ее.
как это проявляется они красненькие с галочкой но останова не происходит? или зелененькие с крестиком?
zub
долгожитель
 
Сообщения: 2884
Зарегистрирован: 14.11.2005 23:51:26

Re: Как отладить компонент. gdb игнорирует бряк.

Сообщение wofs » 29.10.2017 20:43:17

zub писал(а):а если по ф7 построчно пойти зайдет внутрь компонентных исходников?

Нет, что меня очень удивило.
iskander писал(а):Транковый Lazarus это 1.9, но имхо дело не в Лазаре.

Извиняюсь, не достаточно осведомлен.
zub писал(а):как это проявляется они красненькие с галочкой но останова не происходит? или зелененькие с крестиком?

Да, с галочкой.
Скриншот 29-10-2017 203453.png

Скриншот 29-10-2017 203526.png


А это настройки компиляции:
Скриншот 29-10-2017 204026.png


Уровни оптимизации - 0 (без оптимизации).

Добавлено спустя 23 секунды:
И не влезший скрин-шот.

Добавлено спустя 4 минуты 3 секунды:
Притом, ReadFromFile отрабатывает верно и все работает. Но меня интересуют причины, по которым я не могу отлаживать инструкции компонентов. Так как wp с freepascal.org очень любезный человек, но ему быстро надоест разбираться с кривыми файлами, что я хочу загрузить его компонентой :D
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
wofs
постоялец
 
Сообщения: 379
Зарегистрирован: 05.10.2009 10:16:55
Откуда: Астрахань

Re: Как отладить компонент. gdb игнорирует бряк.

Сообщение olegy123 » 29.10.2017 21:27:19

wofs писал(а): Но меня интересуют причины, по которым я не могу отлаживать инструкции компонентов.

Сам компонент должен иметь "Генерировать отладочную информацию для GDB" при компиляции.
olegy123
долгожитель
 
Сообщения: 1643
Зарегистрирован: 25.02.2016 12:10:20

Re: Как отладить компонент. gdb игнорирует бряк.

Сообщение zub » 29.10.2017 21:40:51

я бы сменил -gw2 на -g, по крайней мере на время разборок.

wofs
ты так будешь до заговения разбираться. Где инициатива? например пустой проект с какимнить стандартным лазарусным пакетом как себя ведет?
zub
долгожитель
 
Сообщения: 2884
Зарегистрирован: 14.11.2005 23:51:26

Re: Как отладить компонент. gdb игнорирует бряк.

Сообщение wofs » 29.10.2017 23:19:15

zub писал(а):ты так будешь до заговения разбираться. Где инициатива? например пустой проект с какимнить стандартным лазарусным пакетом как себя ведет?

Сделаю, все сделаю. Завтра еще раз пройдусь по опциям и если не найду проблемы - создам чистый проект и попробую отладить тот же StringGrid. О результатах отпишусь.
Аватара пользователя
wofs
постоялец
 
Сообщения: 379
Зарегистрирован: 05.10.2009 10:16:55
Откуда: Астрахань

Re: Как отладить компонент. gdb игнорирует бряк.

Сообщение wofs » 30.10.2017 23:31:55

В итоге понадобилось скомпилировать под x64 - поставил Lazarus x64 и обнаружил, что там работает все отлично.
Настроил кросс компиляцию из x64 в x32 и снес Lazarus x32.
Хэппи енд. Всем спасибо за участие.
Аватара пользователя
wofs
постоялец
 
Сообщения: 379
Зарегистрирован: 05.10.2009 10:16:55
Откуда: Астрахань

Re: Как отладить компонент. gdb игнорирует бряк.

Сообщение zub » 30.10.2017 23:41:21

странный хэпиэнд. у меня всё прекрасно работает в 32 разрядном лазаре
zub
долгожитель
 
Сообщения: 2884
Зарегистрирован: 14.11.2005 23:51:26

Re: Как отладить компонент. gdb игнорирует бряк.

Сообщение Лекс Айрин » 31.10.2017 10:03:04

zub, возможно, временный глюк, исправленный в более новой версии, или рассинхронизация лазаря и компилятора.

У меня, кстати, тоже все работает с отладкой в 32битной версии.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 25

Рейтинг@Mail.ru