Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.07.27;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.58 MB
Время: 0.007 c
2-1214217352
tey
2008-06-23 14:35
2008.07.27
текст в непонятой кодировке


1-1196097379
Blind Guardian
2007-11-26 20:16
2008.07.27
Странности при совмещении scanline и bitmap.assign


15-1213008836
андр.
2008-06-09 14:53
2008.07.27
Interface


3-1202974636
abhtr
2008-02-14 10:37
2008.07.27
Можно ли изменить название поля в таблице Paradox


2-1214767186
TStas
2008-06-29 23:19
2008.07.27
Оператор Is





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский