Как отлаживать глюк как в примере?

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

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

Ответить
Аватара пользователя
Sharfik
энтузиаст
Сообщения: 839
Зарегистрирован: 20.07.2013 01:04:30

Как отлаживать глюк как в примере?

Сообщение Sharfik »

Есть какие то средства, чтобы найти ошибку?
Сценарий такой. Запускаю программу, открываю в ней проект, закрывают проект, открываю второй, забываю закрыть диалог работы с базой данных, закрываю проект, открываю третий проект получаю ошибку "невозможно получить доступ к памяти". В участке кода, ниже процедура остановки. Если повторяю все что было выше, то ничего не происходит, и все работает.

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

procedure TFLauncher.StartProject(Filename: String);
var
   PageCount:integer;
begin
  if not FileExistsUTF8(Filename) then exit;
  if Assigned(ThisApp.ActiveProject) then exit;
  PageCount:=pgcView.PageCount; //Точка остановки программы, и ошибка доступа к pgcView.
  OpenProject(FileName);
   if PageCount<pgcView.PageCount then
   pgcView.ActivePageIndex:=pgcView.PageCount-1;
end;
zub
долгожитель
Сообщения: 2890
Зарегистрирован: 14.11.2005 22:51:26
Контактная информация:

Сообщение zub »

Если отбросить всякую банальщину, то видимо при определенном сценарии выполнения программы куча портится. Самый плохой тип ошибок - найти причины довольно трудно.
Я обычно поступаю так:
- прогнать с heaptrc, устранить утечки - они часто связаны с подобными ошибками
- прогнать valgrind`ом - находит разные типы ошибок в том числе приводящие к таким последствиям
- если не помогло, выяснить что конкретно испорчено на момент PageCount:=pgcView.PageCount, поставить точку останова на момент создания pgcView или того что испорчено и вписать в watches соответствующее выражение, только не типа pgcView.чтототам, а через разименование конкретного адреса в памяти. Далее постепенно прогоняя программу искать момент на котором это значение "испортится"
Последний раз редактировалось zub 19.06.2015 21:20:09, всего редактировалось 2 раза.
Аватара пользователя
Little_Roo
энтузиаст
Сообщения: 639
Зарегистрирован: 27.02.2009 18:56:36
Откуда: Санкт-Петербург

Сообщение Little_Roo »

конфликт версий лазаря и fpc?
Аватара пользователя
Sharfik
энтузиаст
Сообщения: 839
Зарегистрирован: 20.07.2013 01:04:30

Сообщение Sharfik »

сценарии выполнения программы куча портится

Найти бы в чем разница сценария, если не в действиях пользователя.

Спасибо, буду искать.
Ответить