Отладка в Lazarus

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

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

Alexey_Melky
новенький
Сообщения: 21
Зарегистрирован: 14.05.2005 14:55:31

Сообщение Alexey_Melky »

Я попытался запустить программу в режиме пошагового выполнения. Выполнение программы так и не началось. Также, если я пытаюсь установить break-point в тексте, то получаю слева от строки, которая при этом выделяется, знак вопроса в маленьком кружочке. При этом отладка так и не начинается.
Создается впечатление, что либо я делаю что-то неверно, либо отладка в среде Lazarus не реализована, либо реализована но не до конца.
Может быть кто нибудь подскажет, как правильно подружить Lasarus и отладчик, если конечно такое возможно на сегодняшний день.
Аватара пользователя
Сергей Смирнов
энтузиаст
Сообщения: 595
Зарегистрирован: 28.04.2005 13:23:25
Откуда: Москва
Контактная информация:

Сообщение Сергей Смирнов »

Создается впечатление, что либо я делаю что-то неверно, либо отладка в среде Lazarus не реализована, либо реализована но не до конца.

Первое и третье верно, если речь идёт о виндовой версии относительно свежего Лазаря, а не о версии 0.9.6 (там верно второе). В Проект-> параметры компилятора -> Связывание надо установить галочку на Генерировать информацию для GDB. При этом должны заработать точки останова и пошаговое выполнение. Точки наблюдения, локальные переменные и вычисление выражений тоже как-то работают, но вполне могут и глючить. Тоже самое и для линуксовой версии, но там отладка работает уже давно (несколько лет).
Alexey_Melky
новенький
Сообщения: 21
Зарегистрирован: 14.05.2005 14:55:31

Сообщение Alexey_Melky »

Сергей Смирнов писал(а): Первое и третье верно, если речь идёт о виндовой версии относительно свежего Лазаря, а не о версии 0.9.6 (там верно второе). В Проект-> параметры компилятора -> Связывание надо установить галочку на Генерировать информацию для GDB. При этом должны заработать точки останова и пошаговое выполнение. Точки наблюдения, локальные переменные и вычисление выражений тоже как-то работают, но вполне могут и глючить. Тоже самое и для линуксовой версии, но там отладка работает уже давно (несколько лет).

Речь идет именно об отладке под Win32, точнее XP. Опция гененрирования отладочной информации для GDB установлена. При простом запуске, без точек останова, если указан путь к отладчику, то GDB загружается и выполняется (по крайней мере он попадает в число процессов в диспетчере задач). При этом само приложение (отлаживаемая программа) не запускается. Мало того, если попытаться выйти из Lazarus, все окна, кроме основного закроются, а основное будет висеть до тех пор, пока я не выгружу "вручную" GDB.
Происходит это на текущей версии, по крайней мере на сборке от 30 мая.
Естественно, что до брек-пойнтов дело не доходит.
Вообще-то у меня возникает сомнение, что всякие опции, кроме путей, доходят до компилятора. Уж информация отладочного характера из программ точно не вырезается.
Аватара пользователя
Иван Шихалев
энтузиаст
Сообщения: 1138
Зарегистрирован: 15.05.2006 11:26:13
Откуда: Екатеринбург
Контактная информация:

Сообщение Иван Шихалев »

Уж информация отладочного характера из программ точно не вырезается.

Известный баг линкера под Win32. Выход — strip.
ushakov
новенький
Сообщения: 51
Зарегистрирован: 18.05.2005 11:15:48
Откуда: Украина, Киев

Сообщение ushakov »

>В Проект-> параметры компилятора -> Связывание надо установить галочку на Генерировать информацию для GDB.

Что-то не реботает (linux + 0.9.6)
ushakov
новенький
Сообщения: 51
Зарегистрирован: 18.05.2005 11:15:48
Откуда: Украина, Киев

Сообщение ushakov »

Нашел: "Окружение\Параметры отладчика" необходимо выбрать тип отладчика и задать полный путь к нему (/usr/bin/gdb)
Alexey_Melky
новенький
Сообщения: 21
Зарегистрирован: 14.05.2005 14:55:31

Сообщение Alexey_Melky »

Тем не менее, возвращаясь к теме запуска и отладки программ из среды Lazarus. Все-же, насколько я понимаю, ошибка происходит при запуске GDB именно из среды. Скомпилированный загрузочный файл без труда выполняется, если его загрузить без помощи Lasarus в GDB. И точки останова работают и пошаговое выполнение. Так что упомянутые мной проблемы в предыдущих сообщениях, относятся именно к Lasarus или работоспособности в связке с GDB под Windows.
pavels
незнакомец
Сообщения: 7
Зарегистрирован: 06.01.2006 09:12:40

Сообщение pavels »

Иван Шихалев писал(а):
Уж информация отладочного характера из программ точно не вырезается.

Известный баг линкера под Win32. Выход — strip.

А где это надо использовать ?
Можно подробнее.
Аватара пользователя
Иван Шихалев
энтузиаст
Сообщения: 1138
Зарегистрирован: 15.05.2006 11:26:13
Откуда: Екатеринбург
Контактная информация:

Сообщение Иван Шихалев »

А где это надо использовать ?

Обработать strip'ом готовый исполняемый файл.
pavels
незнакомец
Сообщения: 7
Зарегистрирован: 06.01.2006 09:12:40

Сообщение pavels »

Я наверное что-то напутал.
У меня не идет отладка в Lazarus. И не знаю как ее запустить в Lazarus.
Подскажите как настроить отладку в Lazarus

Версия 0.9.11 от 9.01.2006
Saemon Zixel
новенький
Сообщения: 78
Зарегистрирован: 20.09.2005 18:19:54
Откуда: Sochi

Сообщение Saemon Zixel »

У меня такое тоже было давно на версии 0.9.6-0.9.8 под вин98 (но могло уже что-то зменится).
Это нелечится либо глючит если найдёш другую версию gdb.
Я брал какую-то 5.х из Inkspace, с ней он подглючивал но немного работал.
Попробуй упростить всё на вкладке "Код" в "параметрах компиляции для проекта".
SergKam
постоялец
Сообщения: 251
Зарегистрирован: 16.11.2005 20:31:11
Откуда: Украина,Харьков

Сообщение SergKam »

Кстати, в последних версиях отладка вообще сломана. В линуксе окно настройки отладки вообще по ошибке вылетает. А если вручную настройки в файле исправить всеравно нельзя значения переменных посмотреть(какуюто лажу показывает). И когда это кончится :( ....
Нет значений переменных при отладке в всплывающих подсказках(как в делфях). Будет ли?
Saemon Zixel
новенький
Сообщения: 78
Зарегистрирован: 20.09.2005 18:19:54
Откуда: Sochi

Сообщение Saemon Zixel »

В снапшотах может да, но их использовать некто не заставляет, есть вет стабильная версия.

А ввинде gdb всегда плохо работал, надо остарожно работать ;)
Аватара пользователя
Sharfik
энтузиаст
Сообщения: 839
Зарегистрирован: 20.07.2013 01:04:30

Сообщение Sharfik »

Не хочу новую тему создавать, вопрос по отладке.
Если точка остановки указывает на первую функцию, а лазарус при остановке устанавливает курсор на вторую функцию это как понимать?
У меня что то не то с текстом или отладчик запутался?

Код: Выделить всё

function TBuildingList.Add(Item: TBuildingItem): Integer;
begin
  Result:= inherited Add(TCollectionGroupItem(Item));
end;

function TBuildingList.CreateItem: TBuildingItem;
begin
  Result:=TBuildingItem.Create;
  Result.CollectionName:=FCollectionName;
  DoCreateItem(Result);
end;
zub
долгожитель
Сообщения: 2890
Зарегистрирован: 14.11.2005 22:51:26
Контактная информация:

Сообщение zub »

Первая процедура нигде не вызывается и выкинута из бинарника
Ответить