Что нового

Игнорирование ошибок в скомпилированном скрипте

firex

AutoIT Гуру
Сообщения
943
Репутация
208
Переехали http://autoit-script.ru/index.php?topic=18955.new#new
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
компилировать нужно из комстроки, как я понял
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Неплохо! :ok:
А можно такое же для более ранних версии?
И вообще, может это можно использовать и для отлова этой самой ошибки?
 
Автор
firex

firex

AutoIT Гуру
Сообщения
943
Репутация
208
CreatoR [?]
А можно такое же для более ранних версии?
Конечно.

И вообще, может это можно использовать и для отлова этой самой ошибки?
Практических преград нет, как раз планировал осуществить подобное ( отлов ошибки в DllCallbackRegister ).

joiner [?]
компилировать нужно из комстроки, как я понял
Либо отключить проверку.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
firex
Что нужно поменять что оно работало для других версий?
И ещё, для не скомпилированного скрипта это можно сделать?

Я так понимаю нужно знать офсет адреса где возникает ошибка, тогда как его узнать?
 
Автор
firex

firex

AutoIT Гуру
Сообщения
943
Репутация
208
CreatoR [?]
Что нужно поменять что оно работало для других версий?
Портировать эти патчи на другие версии.

И ещё, для не скомпилированного скрипта это можно сделать?
Еще не смотрел, но в любом случае можно.

Я так понимаю нужно знать офсет адреса где возникает ошибка, тогда как его узнать?
Не совсем. Код организован достаточно удобно, и для обработки ошибок тут своя функция. Ее нужно лишь модифицировать.

На счет перехвата ошибок:
Код:
0004CE15: 
	68 10100100		;(TYPE) 	PUSH 11010
	FF75 AC			;(CAPTION)  	PUSH DWORD PTR SS:[EBP-54]
	FF75 EC			;(TEXT)		PUSH DWORD PTR SS:[EBP-14]
	FF35 E8101800		;(hOwner)	PUSH DWORD PTR DS:[1810E8]
	FF15 E0D61400		; CALL DWORD PTR DS:[<&USER32.MessageBoxW>] (__stdcall)
	33C0			; XOR EAX,EAX
	
	90 90909090		;NOP
	9090 90			;NOP
	9090 90			;NOP
	FF75 EC	909090		;(TEXT)		PUSH DWORD PTR SS:[EBP-14]
	FF15 XXXXXXXX		; CALL DWORD PTR DS:[<&DllCallback>] (__stdcall)
	EB45			; JMP SHORT 0004CE73 (+0x45)

Можно так. Как освобожусь - автоматизирую это дело.
 

Prog

Продвинутый
Сообщения
537
Репутация
65
Игнорирование ошибок может привести к совершенно непредсказуемому результату. Внешне будет казаться что программа работает нормально, но результат окажется совершенно другой. Ведь баг никуда не исчезнет. Т. е. это подобно страусу, спрятавшему голову в песке.
 
Автор
firex

firex

AutoIT Гуру
Сообщения
943
Репутация
208
Prog [?]
Игнорирование ошибок может привести к совершенно непредсказуемому результату. Внешне будет казаться что программа работает нормально, но результат окажется совершенно другой. Ведь баг никуда не исчезнет. Т. е. это подобно страусу, спрятавшему голову в песке.
Все зависит от логики построения кода. Был у меня проект, количество обрабатываемых данных сказывалось на скорости => мне пришлось упрощать где только мог. Свелось к тому, что я оставил лишь критически проверки на их валидность => последовало множество исключений( которые не сказываются на работе в целом, но AutoIt прекращает работу ).

Основная проблема в том, что он не дает пользователю среагировать на ошибку и принять решение - продолжать работу (исправив/проигнорировав исключение) или прекратить.


Добавлено:
Сообщение автоматически объединено:

Обновлено.
 
Верх