Access Violation at adress и Unknown exception at adress

Страницы: 1
RSS
Access Violation at adress и Unknown exception at adress, Прошу помощи с ошибкой Lua
 
Обращаюсь к форуму, потому что уже сам не понимаю где ловить ошибку.

История :

Quik 8.13
Боевой робот, достаточно масштабный, но стабильно работающий более года.
Внешняя библиотека DLL на Cpp.

После совершенно незначительных обновлений библиотеки (тип переменных) и управляющего библиотекой скрипта Lua (тип переменных)  скрипт регулярно падает с двумя видами ошибок -
1. Access Violation at adress XXX
2. Unknown Exception at adress XXX

При этом сам Quik остается рабочим, просто завершает скрипт.

Помогите сузить круг поиска, правильно ли я понимаю, что проблема исключительно в DLL или, возможно, во внутренних функциях, например GetParamEx() и подобных?

Спасибо.
 
Скорее всего это проблемы колбеков, если их используете. Правда не написали какая версия qlua. 5.3 вышла не очень стабильной.
 
Спасибо, учту версия Lua 5.4.1.
 
Цитата
Кот написал:
Обращаюсь к форуму, потому что уже сам не понимаю где ловить ошибку.

История :

Quik 8.13
Боевой робот, достаточно масштабный, но стабильно работающий более года.
Внешняя библиотека DLL на Cpp.

После совершенно незначительных обновлений библиотеки (тип переменных) и управляющего библиотекой скрипта Lua (тип переменных)  скрипт регулярно падает с двумя видами ошибок -
1. Access Violation at adress XXX
2. Unknown Exception at adress XXX

При этом сам Quik остается рабочим, просто завершает скрипт.

Помогите сузить круг поиска, правильно ли я понимаю, что проблема исключительно в DLL или, возможно, во внутренних функциях, например GetParamEx() и подобных?

Спасибо.
1) Вы случаем при небольших изменениях не сменили версию Lua c 5.3   на 5.4?
-----------------------
2) Проверьте свои библиотеки на предмет границ массивов в циклах .
Ошибка Access Violation at adress  намекает на то, что где-то программа пытается выйти за границы массива.
---------------------
3) Unknown Exception at adress  -система сообщает, что она не может обработать данную ошибку,
так как для нее нет обработчика.
===================  
Поставьте вывод в лог файл, чтобы локализовать функцию, в которой возникает ошибка.
 
Цитата
1) Вы случаем при небольших изменениях не сменили версию Lua c 5.3   на 5.4?
-----------------------
Поставьте вывод в лог файл, чтобы локализовать функцию, в которой возникает ошибка.

Спасибо.
Нет, Lua не менял.
 
Скомпилируйте с дебаг информацией и посмотрите стектрейс. Я так всегда и ловлю.
 
Это настолько общие ошибки, что по ним нельзя назвать никакой конкретики.
Где-то обращаетесь за пределы выделенной памяти. Как вариант - индекс в массиве выходит за границы.

А то то, что при этом остаётся рабочим QUIK - это прям я очень удивлен и восхищен разработчиками квика! Это круто
 
Цитата
swerg написал:
А то то, что при этом остаётся рабочим QUIK - это прям я очень удивлен и восхищен разработчиками квика!
По-моему, это нормально, у меня вчера подряд много раз так было в dll на C.
И только, когда я попытался записать в неоткрытый файл, Квик не устоял. :smile:
 
Цитата
Serge123 написал:
Цитата
swerg написал:
А то то, что при этом остаётся рабочим QUIK - это прям я очень удивлен и восхищен разработчиками квика!
По-моему, это нормально, у меня вчера подряд много раз так было в dll на C.
И только, когда я попытался записать в неоткрытый файл, Квик не устоял. ::
dll проще и быстрее отлаживать не в КВИКЕ, а в SCITE
 
Цитата
Кот написал:
Обращаюсь к форуму, потому что уже сам не понимаю где ловить ошибку.

История :

Quik 8.13
Боевой робот, достаточно масштабный, но стабильно работающий более года.
Внешняя библиотека DLL на Cpp.

После совершенно незначительных обновлений библиотеки (тип переменных) и управляющего библиотекой скрипта Lua (тип переменных)  скрипт регулярно падает с двумя видами ошибок -
1. Access Violation at adress XXX
2. Unknown Exception at adress XXX

При этом сам Quik остается рабочим, просто завершает скрипт.

Помогите сузить круг поиска, правильно ли я понимаю, что проблема исключительно в DLL или, возможно, во внутренних функциях, например GetParamEx() и подобных?

Спасибо.
Вы пытаетесь обратится к участку памяти - который вам не принадлежит, или разыменовать нулевой указатель.
 
Если есть исходный код - отслеживайте строку кода на которой падает dll-ка.
 
Всем спасибо, проблема действительно была в DLL.
Забыл предусмотреть return в "исключительных" случаях. (
 
Цитата
nikolz написал:
dll проще и быстрее отлаживать не в КВИКЕ, а в SCITE
Имеется в виду текстовый редактор https://ru.wikipedia.org/wiki/SciTE ?
Не пойму, как в нём можно отлаживать dll для Quik, я пока что привык к консольному редактору Фара, в качестве отладки вывожу значения переменных в файл, как делали деды и прадеды... :what:
Страницы: 1
Читают тему
Наверх