Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Runtime error 216 at 004045B6 - при выходе


Автор: superVad 25.2.2011, 19:25
Есть программа писанная на Д7. Update на Делфи не стоял (для 7 он там один официальный).
После установки Update, при выходе из программы стал появляться Access violation, а после него окошко с надписью Runtime error 216 at 004045B6.

Runtime error 216 - это собственно и есть Access violation.

Подскажите пожалуйста - как мне отловить эту ошибку. Программа довольно большая, а дебагер не помогает.

Автор: northener 25.2.2011, 20:31
Цитата(superVad @  25.2.2011,  19:25 Найти цитируемый пост)
Подскажите пожалуйста - как мне отловить эту ошибку. Программа довольно большая, а дебагер не помогает. 

http://www.eurekalog.com/downloads_delphi.php

Автор: CodeMonkey 25.2.2011, 23:50
Runtime error 216 сильно намекает, что у тебя в программе порча памяти.

Ловится включением отладочного режима в менеджере памяти.

http://www.gunsmoker.ru/2010/03/blog-post.html

Автор: superVad 26.2.2011, 01:42
Фух. Ну нашел строку из-за которой все случилось.
По совету из http://www.gunsmoker.ru/2009/05/access-violation.html включил опции "Use Debug DCUs" и "Stack frames".
И наконец то дебагер стал указывать на строку в которой ошибка. Это в процедуре FinalizeUnits модуля System, которая запускалась из процедуры _halt0.
Далее нагуглил http://blog.karelia.ru/teran/?p=343. Стало ясно, что ошибка в какй то секции finalization. Этих секций оказалось не много.

Вот строка - без которой ошибки нет:
Код

  Log.SaveToFile(GetProtocolTxtFileName('Log'));

Log это TStringList. Чего так - непонятно. Сам лог вполне сохраняется, на самой этой строчке ошибки нету.


CodeMonkey, большое спасибо за твои статьи. Я еще до того как ты отписался ими уже обложился smile 
Менеджеры памяти в данном вопросе не помогли (FastMM, SafeMM). Но как FastMM выдал мне 11 мегабайтный лог - я и призадумался на часик, пока нашел проблему.


northener, не стал ее трогать - платная же.

Автор: northener 26.2.2011, 02:56
Цитата(superVad @  26.2.2011,  01:42 Найти цитируемый пост)
northener, не стал ее трогать - платная же. 

Она платная. И купленная мною. 
Но для прочих она предоставляет триал, который ты можешь/имеешь право реально использовать для поиска конкретной ошибки в своём проекте. Нет гарантии, что она поможет. Но "попытка -  не пытка"!

Добавлено @ 03:04
Цитата(superVad @  26.2.2011,  01:42 Найти цитируемый пост)
Дата 26.2.2011, 01:42 (ссылка) | (нет голосов)

Думаю, что 30 дней тебе хватит, чтобы найти ошибку smile

Автор: superVad 26.2.2011, 09:38
Цитата(northener @  26.2.2011,  01:56 Найти цитируемый пост)
Думаю, что 30 дней тебе хватит, чтобы найти ошибку 

Я думаю, что будет еще шанс это проверить smile 

Автор: CodeMonkey 26.2.2011, 13:36
Лог в 11 Мб - это как бэ решительно намекает.

Автор: superVad 26.2.2011, 14:58
Цитата(CodeMonkey @  26.2.2011,  12:36 Найти цитируемый пост)
Лог в 11 Мб - это как бэ решительно намекает.

И это сразу после запуска. Там с очисткой ТриВью проблемы. Буду разбираться.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)