Как найти ошибку форум

  • #1

скомпелированый скрипт иногда выдает такую вот ошибку

(14670) : ==> Subscript used with non-Array variable.:

14670 – это я так понимаю строка где ошибка, но у меня в скрипте гораздо меньше строк. Я так понимаю это строка в бинарном файле, а как мне ее сопоставить со строкой в скрипте?
запускать как скрипт не хотелось бы.

ivsatel

Продвинутый

Сообщения
319
Репутация
84


InnI

AutoIT Гуру

Сообщения
4,870
Репутация
1,408


  • #3

mitiya [?]

у меня в скрипте гораздо меньше строк. … а как мне ее сопоставить со строкой в скрипте?

Эта строка получается так. В скрипте вместо каждого #include подставляете содержимое соответствующего файла. Если в тех файлах есть #include, то нужно тоже подставить содержимое, учитывая #include-once. Затем нужно удалить все пустые и закомментированные строки, а строки с переносами преобразовать в одну строку. Короче, довольно трудоёмкий процесс.

Сообщения
2,849
Репутация
1,179


  • #4

InnI
Думаю это ещё не всё, ещё комментарии все удалить, возможно лишние переносы строк. Часть этой работы автоматически делает AutoIt3Wrapper+Obfuscator. Комментарии удалить скриптом. Я уже делал такие варианты исходников, если стандартное компилирование вызывает ошибку.

mitiya
Используй рег. выр. для поиска всех вхождений переменной массива. Может рег. выр. используется без проверки на ошибку а потом из него берётся элемент массива. Вполне частая ошибка для новичка.

Astel064

Astel064

Помог мой пост, ставь +!

Сообщения
276
Репутация
51


  • #5

Тоже часто сталкивался раньше с такой проблемой и решил написать небольшую “утилиту” для таких случаев. Она запишет в лог что включается в данный момент (#Include) и запишет последнюю функцию, которая выполняется. А также запишет номер строки, которую он выполнил последнюю.

Вот ссылка на закачку (с Яндекс.диска), т.к. на форуме ограничение в 200 кб… http://yadi.sk/d/6u8k8Z203_Dua
Перетащи скрипт на значок AutoIt3_Debugger.exe и выбери параметры.

CreatoR

CreatoR

Must AutoIt!

Команда форума

Администратор

Сообщения
8,670
Репутация
2,476


   KDS

12.01.09 – 16:02

При формировании отчета о среднесписочной числинности вылетает ошибка

ДокументОснование = ТаблицаНачисленийУдержаний.ПолучитьЗначение(1, “Документ”);

{Отчет.СреднесписочнаяЧисленность.Форма.Модуль(557)}: Номер за пределами значения!

Как её исправить? Помогите

   Mikeware

1 – 12.01.09 – 16:03

А что говорит товарищ Отладчик?

   Medved_1

2 – 12.01.09 – 16:04

(0) проверить трайсером содержимое ТаблицаНачисленийУдержаний. Походу – она пустая.

   KDS

3 – 12.01.09 – 16:04

Вылетает на человеке у которого отпуск по уходу за ребенком

   KDS

4 – 12.01.09 – 16:06

(2) что такое трайсер?

   KDS

5 – 12.01.09 – 16:11

(3) а что с этим челом делать ума не приложу

   Mikeware

6 – 12.01.09 – 16:13

(5) Убей. “нет человека – нет проблемы…”©

   KDS

7 – 12.01.09 – 16:18

Убить??? )))

   KDS

8 – 12.01.09 – 16:19

а если серьезно? что это может быть?

   Sj

9 – 12.01.09 – 16:36

Если ТаблицаНачисленийУдержаний.КоличествоСтрок() = 0 Тогда

 ДокументОснование = ПустоеЗначение(“Документ”);

Иначе

 ДокументОснование = ТаблицаНачисленийУдержаний.ПолучитьЗначение(1, “Документ”);

КонецЕсли;

   KDS

10 – 12.01.09 – 16:51

(9) тогда следующая ошибка

ДатаДосрочногоВыходаНаРаботу = ДокументОснование.ДатаВыходаНаРаботу;

{Отчет.СреднесписочнаяЧисленность.Форма.Модуль(564)}: Значение не представляет агрегатный объект (ДатаВыходаНаРаботу)

это следующая строчка модуля

   KDS

11 – 12.01.09 – 16:52

вот весь код модуля

                           Если ТекущийРасчетИзЖурнала = ВидРасчета.ПособиеПоУходуЗаРебенкомФЗП Тогда        

                               ТаблицаНачисленийУдержаний = “”;

                               глВидРасчетаДействует(Сотрудник, ТекущийРасчетИзЖурнала,

                               ЖурналРасчетовЗарплата.ДатаНачала, ЖурналРасчетовЗарплата.ДатаОкончания, ТаблицаНачисленийУдержаний);

                               ДокументОснование = ТаблицаНачисленийУдержаний.ПолучитьЗначение(1, “Документ”);

                               ДатаДосрочногоВыходаНаРаботу = ДокументОснование.ДатаВыходаНаРаботу;

                           КонецЕсли;

   Мой ник

12 – 12.01.09 – 16:52

(10) Тут уже ничего не сделаешь.

   rs_trade

13 – 12.01.09 – 16:52

(10) нету документа основания…

   KDS

14 – 12.01.09 – 16:54

документ есть

   KDS

15 – 12.01.09 – 16:54

но видимо в нем какой-то косяк, да?

   Mikeware

16 – 12.01.09 – 16:55

(14) Ну нету… НЕТУ!!!

Отладчиком смотрел?

   ado

17 – 12.01.09 – 16:56

После (4) совет может быть только один — пригласить специалиста.

   KDS

18 – 12.01.09 – 16:56

)))

   Mikeware

19 – 12.01.09 – 16:56

(17) Просто ошибка там, где и обычно…

   Sj

20 – 12.01.09 – 17:02

эээ… тогда вопрос… А документ на прием на работу у него есть ?

   Мой ник

21 – 12.01.09 – 17:04

(20) Достижения (опыт) их слишком много, чтобы уместились здесь

нуну

   KDS

22 – 12.01.09 – 17:06

(20) есть конечно, но ошибка видимо не в приеме на работу, а в отпуске по уходу за ребенком

   Sj

23 – 12.01.09 – 17:06

нужен предыдущик код, где заполняется ТаблицаНачисленийУдержаний

   Sj

24 – 12.01.09 – 17:07

Если ТаблицаНачисленийУдержаний.КоличествоСтрок() = 0 Тогда

 ДокументОснование = ПустоеЗначение(“Документ”);

 ДатаДосрочногоВыходаНаРаботу = ”;

Иначе

 ДокументОснование = ТаблицаНачисленийУдержаний.ПолучитьЗначение(1, “Документ”);

ДатаДосрочногоВыходаНаРаботу = ДокументОснование.ДатаВыходаНаРаботу;

КонецЕсли;

ошибку то вот так можно закрыть.

   KDS

25 – 12.01.09 – 17:08

сейчас попробую

   rs_trade

26 – 12.01.09 – 17:09

ищи условие по которому сотрудник не попадает в выборку…

   ado

27 – 12.01.09 – 17:10

(19) Лажает твоя теория 😉

   Mikeware

28 – 12.01.09 – 17:11

(27) Нет. Дятлы есть везде. Просто статистически их больше в определенных диапазонах….

   KDS

29 – 12.01.09 – 17:14

(24) ошибку пропустил, спасибо!!!

   Гефест

30 – 12.01.09 – 17:14

Повторюсь, эпидемия не ограничивается одним 1986-ым:

1966 г. – авария на ядерном реакторе в г. Мелекессе. Получили облучение начальник смены и дозиметрист;

1964-1974 гг. – неоднократное разрушение тепловыделяющих сборок активной зоны реактора на 1-м блоке Белоярской АЭС;

7 января 1974 г – взрыв на 1-м блоке железобетонного газгольдера (стальное сооружение для выдержки газообразных радиоактивных отходов) Ленинградской АЭС;

6 февраля 1974 г – разрыв промежуточного контура на 1-м блоке Ленинградской АЭС. Погибли три человека;

1975 г – частичное разрушение активной зоны реактора на 1-м блоке Ленинградской АЭС. В окружающую среду было выброшено около 1,5 млн. Ки высокоактивных радионуклидов;

1977 г – расплавление 50% тепловыделяющих сборок активной зоны реактора на 2-м блоке Белоярской АЭС. Ремонт, сопровождающийся переоблучением персонала, длился около года;

1982 г – авария на 1-м блоке Чернобыльской АЭС с радиоактивным выбросом (в районе станции и г. Припять.);

1985 г – авария на 1-м блоке Балаковской АЭС. Погибли 14 человек.

http://www.iss.niiit.ru/book-7/glav-2-2.htm

   KDS

31 – 12.01.09 – 17:15

(30) это ты к чему? ))

   Sj

32 – 12.01.09 – 17:15

(29) ну и ладныть тады…

   Sj

33 – 12.01.09 – 17:15

(31) его пучит

   KDS

34 – 12.01.09 – 17:15

))))))

  

Mikeware

35 – 12.01.09 – 17:16

(30) Да и естественных источников хватает… Мутации – вещь не обязательная, а вероятностная…

Курсы повышения квалификации.
Как читать логи.
Пособие для чайников.
Часть 1: Ищем ошибку
Сама ошибка начинается после at
Пример лога:

java.lang.RuntimeException: Failed to load bukkit events (not fatal)
at com.cricketcraft.chisel.Chisel.<clinit>(Chisel.java:65)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at cpw.mods.fml.common.FMLModContainer.constructMod(FMLModContainer.java:420)
at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74)
Причина ошибки после Caused by:
Caused by: java.lang.NullPointerException

Где ошибка, это:

java.lang.NullPointerException

Внимание! В одном логе может быть несколько “Caused by”. Рядом с ними обычно есть надпись (not fatal) (Перевод с английского: не смертельно), располагающаяся выше, над всеми “at”. Нужная ошибка должна быть ближе к концу лога и без надписи (not fatal).
Советы знаменитого капитана Ясен Красен:
Сочетание клавиш Ctrl+F может вызвать окно поиска в таких местах, о существовании которых вы даже не подозревали. Используя поиск, можно быстро и легко найти нужные слова, даже в многотомных произведениях мировой литературы, не говоря уже про логи ошибок.
Ещё неплохо помогает наличие программы Notepad++, с помощью которой можно быстро находить ошибки хоть в 20 логах одновременно.
Пример (из данного лога):

at net.minecraft.world.World.func_72939_s(World.java:1851) ~[ahb.class:?]
at net.minecraft.client.Minecraft.func_71407_l(Minecraft.java:1995) ~[bao.class:?]
at net.minecraft.client.Minecraft.func_71411_J(Minecraft.java:962) ~[bao.class:?]
at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:887) [bao.class:?]
at net.minecraft.client.main.Main.main(SourceFile:148) [Main.class:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_45]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_45]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_45]
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_45]
at net.minecraft.launchwrapper.Launch.launch(Launch.java:134) [launchwrapper-1.9.jar:?]
at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.9.jar:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_45]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_45]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_45]
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_45]
at r.IIIiIiIiiiI.<init>(io:77) [launcher.jar:?]
at r.IIIiIiIiiiI.main(io:71) [launcher.jar:?]
Caused by: java.lang.NoSuchMethodError: ic2.core.audio.AudioManager.getDefaultVolume()F

Причина ошибки: 

java.lang.NoSuchMethodError

                                                                      Часть 2: Устранение ошибки
                                                 Наиболее популярные ошибки и методы их исправления
                                                                                     Ошибка.
                                                                                Рекомендации.

org.lwjgl.LWJGLException: Pixel format not accelerated

Обновить драйвера видеокарты.

java.lang.OutOfMemoryError

Уменьшить кол-во выделенной оперативной памяти.

java.lang.NoSuchMethodError

Обновить клиент. Если это не помогло, у разработчика мода руки из задницы – писать Тех.Администратору. Ну или мне.

java.io.EOFException: null

(в лаунчере)
Отключить антивирус/брандмауэр/блокировщик рекламы (AdBlock)

java.net.ConnectException: Connection timed out: connect

(в лаунчере)
Отключить антивирус (или удалить этот чёртов др.Веб), после скачивания добавить лаунчер в исключения

java.lang.NullPointerException

У разработчика мода руки из задницы. Писать TheStalkerNet”у
Советы знаменитого капитана Ясен Красен:
“Если игрок не может предоставить внятное описание и/или лог. Пройти курсы по открытию третьего глаза.”
1c4a105a344dd771d0e38439667e442d.jpg

Провести очистку мозга от нубопорчи.

Помогите пожалуйста, знаний не хватает :)
Найдите ошибки, определите причину каждой и исправьте предложения:
1. Порадуемся вторым местом Ольги Зайцевой.
– Порадуемся второму месту Ольги Зайцевой (Ошибка -Нарушение согласования в словосочетании, главное?? (зависимое??) слово в другом падеже ????)

2. Я думаю, что несколько интересных фигур на достаточно ключевые должности от “Яблока” будут уже при первой новой президентской власти.
– Я думаю, что несколько интересных кандидатур на ключевые должности от партии “Яблоко” будут выдвинуты новой президентской властью. (как-то так, только что за ошибки?? Речевые? тавтология??? (первой новой, достаточно ключевые))

3. Нерадивый студент молчал у доски как рыба об лед.
– Нерадивый студент молчал у доски словно воды в рот набрал. (Ошибка – неуместное употребление фразеологизма?)

4. Главная бухгалтерия обслуживает теперь тринадцать детских садов и двадцать два яслей.
– Главная бухгалтерия обслуживает теперь тринадцать детских садов и ясли в количестве двадцати двух штук.
либо – Главная бухгалтерия обслуживает теперь тринадцать детских садов и двадцать два ясельных учреждения. (????? :shock: )
(Ошибка: Грамматическая, при соединении составного числительного оканчив. на 2,3,4 с существительными имеющими только множественное число (сутки, ясли, ножницы) возникает синтаксическая несочетаемость, можно заменить слово либо грамматический строй предложения)

5. У военных усиливается озабоченность за безопасность границ (мое любимое предложение с выражением усиливается озабоченность!!!)
– У военных нарастает (усиливается) тревога за безопасность границ? вид ошибки – речевая Неуместное употребление слова в несвойственном ему значении???

6. Первая трудность произошла со стройматериалами.
– Первая трудность возникла со стройматериалами. (вид ошибки – речевая Неуместное употребление слова в несвойственном ему значении??? )
Спасибо, если кто поможет, мне просто нужна четкая формулировка ОШИБКИ.

Добавить комментарий