Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.07.27;
Скачать: CL | DM;

Вниз

Debuging troubles   Найти похожие ветки 

 
savyhinst ©   (2008-06-24 14:22) [0]

Здраствуйте.
У меня тут траблы с дебаггингом - просто жесть. Ошибка "List index out of bounds возникает у меня будто-бы
program pro;

uses
 Forms,
 mainform in "mainform.pas" {frm_TetrisForm},

{$R *.res}

begin
 Application.Initialize;
 Application.CreateForm(Tfrm_Form, frm_Form);
 Application.Run;
end. <<ЗДЕСЬ!!! =:]
Так показывает дебаггер. Как бороться?? Как узнать, где на самом деле возникает ошибка?? Никаких своих dll я не подключал, у меня вроде-бы всё в одном. Подскадите пожалуйста.
Спасибо за внимание.


 
Плохиш ©   (2008-06-24 14:23) [1]


> где на самом деле возникает ошибка??

В mainform.pas


 
hinst   (2008-06-24 14:35) [2]

У меня еще есть там куча юнитов. И, скорее всего, ошибка в них *CRAZY*


 
savyhinst ©   (2008-06-24 14:53) [3]

Так как же выловить ошипку?


 
Milk   (2008-06-24 14:54) [4]


> savyhinst ©   (24.06.08 14:22)  

Что у тебя в FormCreate, FormActivate, FormShow?


 
savyhinst ©   (2008-06-24 14:58) [5]

ошибка вылетает после нажатия на кнопку

procedure Tfrm_Form.FormKeyDown(Sender: TObject; var Key: Word;
 Shift: TShiftState);
begin
 tman.OnKeyDown(key);
 WriteLog("OnKeyDown - all done");
end;
>>и тут же ошибка, так как "OnKeyDown - all done"  -  последнее, что есть в логе


 
Плохиш ©   (2008-06-24 14:59) [6]


> savyhinst ©   (24.06.08 14:58) [5]

Рекомендую всё-таки ознакомиться с возможностями встроенного в делфи отладчика.


 
savyhinst ©   (2008-06-24 15:02) [7]

Я с ними знаком =:S


 
Плохиш ©   (2008-06-24 15:09) [8]


> savyhinst ©   (24.06.08 15:02) [7]
> Я с ними знаком =:S

Судя по этой ветке и тем более по [5] - "слышал звон..."


 
Palladin ©   (2008-06-24 15:10) [9]


> Так как же выловить ошипку?

начни с ее локализации


 
Amoeba ©   (2008-06-24 15:11) [10]


> savyhinst ©   (24.06.08 15:02) [7]
>
> Я с ними знаком =:S

Когда врешь, надо подпрыгивать!

P.S. А ошибку ищи в 17-й строке своего кода.


 
savyhinst ©   (2008-06-24 15:13) [11]

*С локализации, это как?
*Я не вру 8-]


 
Amoeba ©   (2008-06-24 15:17) [12]


> savyhinst ©   (24.06.08 15:13) [11]
>
> *С локализации, это как?
> *Я не вру 8-]

Это уже клинический случай.


 
savyhinst ©   (2008-06-24 15:18) [13]

Amoeba ©  [12]
Вы не правы. 8-]


 
savyhinst ©   (2008-06-24 15:25) [14]

Хм. Лично я обычно ловлю ошибки так: если есть неуловимая ошибка, то после каждой строчки ошибкоподозрительного кода я вставляю
WriteLN(logfile,"action - done"); flush(logfile);
Это обычно помогает точно узнать, где у меня ошибка. У кого-нибудь есть мнения на этот счёт?


 
savyhinst ©   (2008-06-24 15:26) [15]

только, ессно, слово action заменяю на описание того, что именно сделано


 
Milk   (2008-06-24 15:32) [16]

На какой строке по F9 возникает List index out of bounds.
А лучше пройдись по F8 (тебе говорят об отладке, а ты отпихиваешься, типа мол сам все знаю).


 
savyhinst ©   (2008-06-24 15:39) [17]

ХЭЛП.
Жму F8:

begin
 Application.Initialize;
 Application.CreateForm(Tfrm_TetrisForm, frm_TetrisForm);
 Application.Run;
end.

Жму F8:
begin
 Application.Initialize;
 Application.CreateForm(Tfrm_TetrisForm, frm_TetrisForm);
 Application.Run;
end.

Жму F8:
begin
 Application.Initialize;
 Application.CreateForm(Tfrm_TetrisForm, frm_TetrisForm);
 Application.Run;
end.

Жму F8:
begin
 Application.Initialize;
 Application.CreateForm(Tfrm_TetrisForm, frm_TetrisForm);
 Application.Run;
end.

Жму F8:

тут форм появляется и начинает что-то показывать

Жму F8:

begin
 Application.Initialize;
 Application.CreateForm(Tfrm_TetrisForm, frm_TetrisForm);
 Application.Run;
end. <<и отладчик говорит, что эксцепшн тут


 
savyhinst ©   (2008-06-24 15:55) [18]

хэлп!!! как откопать ашипку? можбыть, кто-нибудь знает? наверняка кто-нибудь из вас знает некоторые приёмы нахождения не3аметных ошибок?


 
McSimm ©   (2008-06-24 15:57) [19]

поставьте точки прерывания в процедурах (обработчиках событий)


 
Поросенок Винни-Пух ©   (2008-06-24 15:59) [20]

найди парные квадратные скобки. там и есть твоя ошибка.


 
Palladin ©   (2008-06-24 16:00) [21]


> savyhinst ©   (24.06.08 15:55) [18]

ты ЭТО называешь незаметной ошибкой??


 
savyhinst ©   (2008-06-24 16:17) [22]

>>[21]
да, так как не видно, где она возникает


 
Palladin ©   (2008-06-24 16:23) [23]

а разве не ясно, что где то на этапе создания формы?


 
Milk   (2008-06-24 16:33) [24]

> Palladin ©   (24.06.08 16:23) [23]
Сначала я тоже так подумал, однако ошибка возникает после нажатия любой клавиши (судя по [5] ошибка вылетает после нажатия на кнопку).
Не исключено что, ошибка связана с тем, что автор обращается к какому-нибудь еще не "сформированному" VCL с ItemIndex:= -1;.


 
savyhinst ©   (2008-06-24 16:34) [25]

нет. Почему это? Она же запускается! И показывается. И рисуется.


 
savyhinst ©   (2008-06-24 16:35) [26]

Хэлп. ошибка возникает у меня на нажатие пробела! На него я повесил свой обработчик. И ошибку искал в нём. Но как показал опыт, весь form.OnKeyDown работает нормально, а ошибка возникает сразу после него


 
McSimm ©   (2008-06-24 16:38) [27]

OnKeyUp ?


 
Тын-Дын ©   (2008-06-24 16:40) [28]


> savyhinst ©   (24.06.08 15:39) [17]
> ХЭЛП.
> Жму F8:

Кроме F8, есть ещё F7.


 
Palladin ©   (2008-06-24 16:43) [29]


> savyhinst ©   (24.06.08 16:34) [25]

ну а какого ты мозги паришь всем и себе в том числе? как тебя кроме как балбесом не назвать? теперь оказываеть искать нужно в реакции на пробел


 
Palladin ©   (2008-06-24 16:45) [30]

поди еще и таймеры есть...


 
Amoeba ©   (2008-06-24 16:45) [31]


> savyhinst ©   (24.06.08 16:35) [26]
>
> Хэлп. ошибка возникает у меня на нажатие пробела! На него
> я повесил свой обработчик. И ошибку искал в нём. Но как
> показал опыт, весь form.OnKeyDown работает нормально, а
> ошибка возникает сразу после него

Может свой глючный код покажешь, в конце-коцов, честному народу? Или на телепатов уповаешь?


 
Поросенок Винни-Пух ©   (2008-06-24 16:56) [32]

лучше не надо никакого кода.
:)


 
Тын-Дын ©   (2008-06-24 17:18) [33]

Ну что человека гнобите? Не умеет он с отладчиком работать, так научить надо.


 
Поросенок Винни-Пух ©   (2008-06-24 17:23) [34]

стебаться он зато прекрасно умеет


 
savyhinst ©   (2008-06-24 17:29) [35]

хм. Так кто-нибудь может подсказать, как заставить отладчика увидеть ошибку там, где именно она возникает? Просто хочется, чтобы он увидел "List index out of bounds (0)" не в слове "end." , а в строке с обращением к элементу массива.


 
Поросенок Винни-Пух ©   (2008-06-24 17:30) [36]

тебе уже сказали русским языком. ошибка там, где квадратные скобки с переменной внутри.


 
savyhinst ©   (2008-06-24 17:33) [37]

у меня таких мест очень много; cмотреть - непересмотреть =:-0


 
Поросенок Винни-Пух ©   (2008-06-24 17:33) [38]

ну вот пересмотришь все - тогда и приходи. а щас не парь мозг людям.


 
savyhinst ©   (2008-06-24 17:35) [39]

хм. А что, отладчик разве не должен определить, где оно происходит?


 
Palladin ©   (2008-06-24 17:36) [40]

должен, но ты и ему запарил )


 
Юрий Зотов ©   (2008-06-24 17:38) [41]

> savyhinst ©   (24.06.08 17:33) [37]

> у меня таких мест очень много;

Надо включить опцию компилятора {SHOWVARNAMES ON}. Тогда при возникновении ошибки будет показано имя массива, при работе с которым эта ошибка возникла.


 
savyhinst ©   (2008-06-24 17:40) [42]

[Pascal Error] project_SteelTetris.dpr(3): E1030 Invalid compiler directive: "SHOWVARNAMES"


 
Поросенок Винни-Пух ©   (2008-06-24 17:40) [43]

"а у меня очень много массивов с таким именем!"
:)))


 
Юрий Зотов ©   (2008-06-24 17:45) [44]

> savyhinst ©   (24.06.08 17:40) [42]

Надо выключить опцию компилятора {SHOWPASCALERRORS OFF}.


 
Поросенок Винни-Пух ©   (2008-06-24 17:48) [45]

Лучше включить опцию
{$REMOVEALLMISTAKES JUSTNOW!}


 
Тын-Дын ©   (2008-06-24 17:55) [46]

Удалено модератором


 
Поросенок Винни-Пух ©   (2008-06-24 17:57) [47]

Удалено модератором


 
Юрий Зотов ©   (2008-06-24 17:58) [48]

> Тын-Дын ©   (24.06.08 17:55) [46]

Товаришч решил поразвлекаться - мы тоже.


 
Anatoly Podgoretsky ©   (2008-06-24 18:21) [49]

> Тын-Дын  (24.06.2008 17:18:33)  [33]

И лучшая помощь - это не пользоваться отладчиком, раз не умеет.
Если этого будет недостаточно, то еще в запасе есть Паскаль.


 
Ляпа   (2008-06-24 19:44) [50]

Tools -> Debugger Options -> Language Exceptions -> Stop On Delphi Exceptions
Галка стоит?


 
Ляпа   (2008-06-24 21:05) [51]


> Palladin ©   (24.06.08 16:23) [23]
> а разве не ясно, что где то на этапе создания формы?

С какого перепугу? Скорее уж - на этапе разрушения формы.


 
Palladin ©   (2008-06-24 21:08) [52]


> Ляпа   (24.06.08 21:05) [51]

а еще скорее на этапе написания...


 
Palladin ©   (2008-06-24 21:09) [53]

в голове эксепшены сверкали... здравый смысл боролся с бездарностью :)


 
Тын-Дын ©   (2008-06-24 21:20) [54]

Удалено модератором


 
Palladin ©   (2008-06-24 21:25) [55]

Удалено модератором


 
Тын-Дын ©   (2008-06-24 21:27) [56]

Удалено модератором


 
Тын-Дын ©   (2008-06-24 23:31) [57]


> Palladin ©   (24.06.08 21:09) [53]
> в голове эксепшены сверкали... здравый смысл боролся с бездарностью
> :)


10 лет пишу на Delphi, столько же времени пользуюсь отладчиком. Однако уверен в том, что не знаю всех его возможностей. и не считаю себя бездарностью из-за этого.

PS.
Других тоже не считаю бездарностью. Никого.


 
Viktorious ©   (2008-06-25 13:27) [58]

1. При возникновении ошибки View-Debug Windows-Call Stack. Может помочь определить место возникновения ошибки.
2. Если ошибка вылетает на end. в dpr-модуле, она может прятаться в секции finalization ... end. используемых модулей. Проверьте каждый модуль, который используете.



Страницы: 1 2 вся ветка

Текущий архив: 2008.07.27;
Скачать: CL | DM;

Наверх




Память: 0.61 MB
Время: 0.021 c
2-1214750595
lewka-serdceed
2008-06-29 18:43
2008.07.27
Зависание формы во время выполнения задачи


2-1214300224
qwert
2008-06-24 13:37
2008.07.27
Запуск *,exe


11-1192180159
Nikfel
2007-10-12 13:09
2008.07.27
Как определить в какую сторону крутится ролик мыши.


15-1212964470
axis_of_evil
2008-06-09 02:34
2008.07.27
proxy server, mail server


2-1214220645
ciborg
2008-06-23 15:30
2008.07.27
Сбор информации о системе