PDA

Просмотр полной версии : [Вопрос] Crashdetect



BossArturKA
27.11.2015, 00:16
Приветствую. Из-за чего дебажит "Crashdetect"?
Есть таймер, в таймере проверка:

if(GetPlayerWeapon(playerid) != curpweap[playerid]){}
В curpweap хранится ID оружия. GetPlayerWeapon - стандартная функция.
А Crashdetect все равно ругается:

22:27:32 > [debug] AMX backtrace:
22:27:32 > [debug] #0 000f97d8 in public UpdateTimers () from gm.amx
22:27:32 > [debug] Run time error 4: "Array index out of bounds"
22:27:32 > [debug] Accessing element at index 100 past array upper bound 99

$continue$
27.11.2015, 01:46
Выход за пределы массива.
Откомпилируйте с отладкой -d3

BossArturKA
27.11.2015, 02:09
Osetin, для чего пост вернул? =)
Написал же, чуть лоханулся. Проблема вообще не там была.
А пост "$continue$" бесполезный. Такой-же ответ можно получить в гугле (Я так полагаю, от туда он его и взял).
P.S.: Проблема была в вызове функции.
Так что разумнее все таки удалить тему, так как тема - хлам.

Daniel_Cortez
27.11.2015, 09:19
Osetin, для чего пост вернул? =)
Правила читаем, пункт 9.2. (http://pro-pawn.ru/showthread.php?9968)




А пост "$continue$" бесполезный. Такой-же ответ можно получить в гугле (Я так полагаю, от туда он его и взял).
Откуда такая уверенность? Чтобы понять, на что указывает CrashDetect, гугл вообще не нужен.



Проблема была в вызове функции.
Опять же, откуда такая уверенность? В логах CrashDetect написано, что происходит выход за пределы массива (в каком-то массиве 100 элементов от 0 до 99, а вы пытаетесь что-то сделать с несуществующим 100-ым элементом). С функцией GetPlayerWeapon это никаким образом не связано.



Так что разумнее все таки удалить тему, так как тема - хлам.
Пока что ваши поспешные выводы говорят об обратном.

$continue$
27.11.2015, 19:36
А пост "$continue$" бесполезный. Такой-же ответ можно получить в гугле (Я так полагаю, от туда он его и взял).

http://lurkmore.so/images/d/d8/Rtfm.jpg
RTFM. (http://lurkmore.co/RTFM)

BossArturKA
02.12.2015, 00:11
DC, нравится замечания чтоль мне выдавать? :D
Проблемы была В ВЫЗОВЕ ФУНКЦИИ (Что влекло переполнение массива).

1. Пост удалил я ДО первого ответа в нем.
2. Проблема была вызвана невнимательностью (Цикл вызывающий функцию).
Данная тема только введет пользователей в заблуждение
Так что правило 9.2 тут не катит.

Возможно я не прав по поводу поста $continue$, если бы у меня была проблема с переполнением массива он бы мне помог (Хотя зная английский на школьном уровне и тем более умея пользоваться поисковыми системами вопрос бы я не задал этот).

$continue$ можно было обойтись без этого:
http://i.imgur.com/YFZA4Yl.png
Я опубликовал свою точку зрения.
Не смотря на то, что я не согласен с тобой я все равно нажал под твоим сообщением "Спасибо".
Что означало благодарность за отзывчивость.

$continue$
02.12.2015, 00:25
DC, нравится замечания чтоль мне выдавать? :D
Проблемы была В ВЫЗОВЕ ФУНКЦИИ (Что влекло переполнение массива).

1. Пост удалил я ДО первого ответа в нем.
2. Проблема была вызвана невнимательностью (Цикл вызывающий функцию).
Данная тема только введет пользователей в заблуждение
Так что правило 9.2 тут не катит.

Возможно я не прав по поводу поста $continue$, если бы у меня была проблема с переполнением массива он бы мне помог (Хотя зная английский на школьном уровне и тем более умея пользоваться поисковыми системами вопрос бы я не задал этот).

$continue$ можно было обойтись без этого:
http://i.imgur.com/YFZA4Yl.png
Я опубликовал свою точку зрения.
Не смотря на то, что я не согласен с тобой я все равно нажал под твоим сообщением "Спасибо".
Что означало благодарность за отзывчивость.
При отладки -d3 можно получить строки выхода за пределы массива от чего и танцевать с бубном.

Опять же RTFM.

P.S: Не надо быть поваром, что бы понять что суп прокис. Не надо быть плотником, что бы забить гвоздь в стену. Не надо быть дворником, что бы очищать снег. Не надо быть супер - крутым, тестером что бы понять на какой строке выход за пределы массива

Daniel_Cortez
02.12.2015, 07:11
Проблемы была В ВЫЗОВЕ ФУНКЦИИ (Что влекло переполнение массива).
Всего один вопрос: какой размер у массива curpweap?


1. Пост удалил я ДО первого ответа в нем.
2. Проблема была вызвана невнимательностью (Цикл вызывающий функцию).
Данная тема только введет пользователей в заблуждение
Так что правило 9.2 тут не катит.

Во-первых, какое отношение это всё имеет к правилам?
Во-вторых, я не выдал вам балл нарушения.
В-третьих, модераторы сами могут решить, какие темы стоит сохранить, а какие отправить на удаление.

BossArturKA
02.12.2015, 14:48
DC
1. curpweap = MAX_PALYERS (a_samp 100).
2. Отметка о нарушении ОПФ в профиле весит (С данной темы).
3. Дело твоем, модератор... Ты опровергаешь тот факт, что тема вводит пользователей в заблуждение. В теме предоставлен лишь код проверки, который по сути верен.

Daniel_Cortez
02.12.2015, 20:49
Проблемы была В ВЫЗОВЕ ФУНКЦИИ (Что влекло переполнение массива).

Ваша уверенность в своей правоте просто поражает. Btw, я не зря спросил про размер массива.




1. curpweap = MAX_PALYERS (a_samp 100).

Если под присваиванием вы имели в виду размер массива (довольно странный способ описания, ИМХО), то...
CrashDetect вывел сообщение о том, что вы пытаетесь что-то сделать с 100-м элементом массива, которого не существует (в массиве 100 элементов от 0 до 99).
Функция GetPlayerWeapon сразу отпадает, т.к. это нативная функция, а CrashDetect мониторит только код на Pawn. Есть вариант с перехватом этой функции, но вы, как я понял, вряд ли пользуетесь перехватами.
Но если предположить, что происходит выход за пределы массива curpweap, то внезапно всё сходится: массив состоит как раз из 100 элементов, от 0 до 99, 100-го элемента в нём нет.


22:27:32 > [debug] Accessing element at index 100 past array upper bound 99



2. Отметка о нарушении ОПФ в профиле весит (С данной темы).
http://ihost.pro-pawn.ru/image.php?di=27VP
Это все нарушения. Оба были выданы в октябре, когда этой темы и в помине не было.



3. Дело твоем, модератор...
.... wut?



Ты опровергаешь тот факт, что тема вводит пользователей в заблуждение. В теме предоставлен лишь код проверки, который по сути верен.
Вместо того, чтобы пустословить, докажите, что я был не прав по поводу массива curweap и эта тема вводит в заблуждение.

BossArturKA
04.12.2015, 03:50
DC, толку нет в данной теме с тобой спорить =).
Только оффтопа на форуме увеличилось на 9 постов.
Ответ в теме появился после её удаления [ФАКТ], по этому тему считаю бесполезной (Для меня).

А вот, ответ на тему заблуждения пользователей.
С чем у тебя ассоциируется playerid (Риторический вопрос)? С ID игрока.
В моем же случаи, playerid - элемент цикла.
(Бред, но разве это как минимум не заблуждение?)

Что-бы полностью объяснить тебе суть ошибки, нужно выложить не 1 кусочек сценария.


Дело твоем, модераторТвое, опечатка.

НЕ НУЖНО БОЛЬШЕ ОТВЕТОВ. НЕ ХОЧЕШЬ УДАЛЯТЬ ТЕМУ - ПОЧИСТИ ЕЁ.

Daniel_Cortez
06.12.2015, 11:09
Ответ в теме появился после её удаления [ФАКТ]
Во-первых, вы не удалили тему, а просто отредактировали пост, стерев старое содержимое.
Во-вторых, вы могли просто оставить ниже пояснение о том, что уже решили проблему самостоятельно, и написать, как именно решили её (ибо, как оказалось, решили вы её неправильно - нужно устранять причину проблемы, а не удалять весь код без разбора).



по этому тему считаю бесполезной (Для меня).
Для вас... т.е. о других вы, конечно же, не подумали.



А вот, ответ на тему заблуждения пользователей.
С чем у тебя ассоциируется playerid (Риторический вопрос)? С ID игрока.
В моем же случаи, playerid - элемент цикла.
(Бред, но разве это как минимум не заблуждение?)
Если речь идёт о какой-то ошибке, то у меня playerid может ассоциироваться с чем угодно.
Приходилось видеть "гениальные идеи" и похуже playerid вместо счётчика цикла. Например, некоторым религия не позволяет использовать sscanf2 и им больше по душе мазохизм с ReturnUser, strval, удалением лишних пробелов с помощью цикла - и так в каждой команде.
Или ещё, как-то пришлось наблюдать, как один "профессионал" решил перенести все действия из односекундного таймера в OnPlayerUpdate, чтобы "убрать лишний таймер и снизить нагрузку на сервер" - а потом ещё удивлялся, мол почему это мод виснет и список игроков в табе не обновляется даже при онлайне в 1-2 игрока.
Что касается остальных, кто смотрит эту тему - иногда полезно рассматривать нестандартные ситуации. Тем более, что ответ дан.



Что-бы полностью объяснить тебе суть ошибки, нужно выложить не 1 кусочек сценария.
В данном случае хватило и одного куска, хоть и с пояснениями по поводу размера массива.



НЕ НУЖНО БОЛЬШЕ ОТВЕТОВ. НЕ ХОЧЕШЬ УДАЛЯТЬ ТЕМУ - ПОЧИСТИ ЕЁ.
Успокойтесь, уважаемый. С темой разберёмся (либо я, либо Londlem).