Вверх ↑
Этот топик читают: Гость
Ответов: 704
Рейтинг: 7
#61: 2011-10-17 23:18:11 ЛС | профиль | цитата
Кстати, а подскажите, onClose пишет что событие происходит только на главной форме при закрытии - это типа в мультик уже событие не пройдет? Или в ChildPanel какую-нибудь?
------------ Дoбавленo в 23.18:
Вот exe. Ошибка из него. http://hm-online.com.ua/Dom.zip
карма: 0

0
Ответов: 3889
Рейтинг: 362
#62: 2011-10-17 23:21:59 ЛС | профиль | цитата
Neo писал(а):
это типа в мультик уже событие не пройдет? Или в ChildPanel какую-нибудь?

Это, типа, оно только из главной формы (MainForm) выходит перед завершением, иэ ChildForm - нет, не смотря на то, что там эта точка есть в списке скрытых.
карма: 1

0
Ответов: 704
Рейтинг: 7
#63: 2011-10-17 23:37:57 ЛС | профиль | цитата
Кстати, а реально разбирать ошибки самостоятельно с такими базовыми знаниями, как у меня? Чем это можно сделать? Не охота висеть на шее у Вас
карма: 0

0
Ответов: 3889
Рейтинг: 362
#64: 2011-10-17 23:48:11 ЛС | профиль | цитата
Neo писал(а):
с такими базовыми знаниями, как у меня

Смотря на чём "базируются" знания. Тут требуются знания о внутренней структуре исполнимых файлов (exe), работе процессора, памяти и организации ядра операционной системы, плюс навык использования программных средств отладки и декомпиляции. Помимо этой "базы" требуются различные знания из предметных областей, смежных с исследуемыми программами.
карма: 1

0
Ответов: 704
Рейтинг: 7
#65: 2011-10-17 23:53:01 ЛС | профиль | цитата
[offtop]1nd1g0, всего-то? А, так это все я как раз случайно умею [/offtop]
карма: 0

0
Ответов: 3889
Рейтинг: 362
#66: 2011-10-17 23:57:54 ЛС | профиль | цитата
Neo писал(а):
Ошибка из него. http://hm-online.com.ua/Dom.zip

В этом исполнимом файле по смещению A91EC находятся бессмысленные бинарные данные (по периодичности - то ли картинка, то ли звук), а не программа. Либо ошибка всё-таки не из него, либо что-то передало управление данным, надо смотреть стек.

Neo писал(а):
разбирать ошибки самостоятельно

Есть ещё вариант давать полный дамп памяти процесса в момент ошибки (в NT6.1 его можно сделать даже диспетчером задач).
Бывает система (при включенной функции отчётов) предлагает отослать информацию разработчикам, так вот, для уточнения диагноза её можно отослать мне

Neo писал(а):
так это все я как раз случайно умею

Тогда осталось поставить хотя бы отладчик и вперёд.
карма: 1

0
Ответов: 704
Рейтинг: 7
#67: 2011-10-18 00:29:50 ЛС | профиль | цитата
[offtop]1nd1g0, я так и знал! Я подозревал давно, что Вы разработчик Windows! [/offtop] - извините, без подкола, просто дико захотелось пошутить.
А какой именно стек? Имеется в виду системный стек какой-то или стек в моей программе?
карма: 0

0
Разработчик
Ответов: 26303
Рейтинг: 2146
#68: 2011-10-18 09:42:51 ЛС | профиль | цитата
[offtop]
Neo писал(а):
Я подозревал давно, что Вы разработчик Windows!

А вот это -- хрен его знает. Чем черт не шутит [/offtop]
карма: 22

0
Ответов: 3889
Рейтинг: 362
#69: 2011-10-18 11:26:39 ЛС | профиль | цитата
Neo писал(а):
Имеется в виду системный стек

Ответ содержится в вопросе.

Neo писал(а):
Вот exe. Ошибка из него. http://hm-online.com.ua/Dom.zip

Нашёл место возникновения ошибки - она происходит в деструкторе TClassMainForm. Кто-то повредил или неправильно зарегистрировал адрес своего деструктора из таблицы деинициализации.
------------ Дoбавленo в 11.26:
Neo, какая у Вас ОС (разрядность, версия ядра) и что у Вас содержится в ветке реестра HKLMSoftwareMicrosoftWindows NTCurrentVersionAeDebug
карма: 1

0
Ответов: 704
Рейтинг: 7
#70: 2011-10-18 15:58:16 ЛС | профиль | цитата
1nd1g0 писал(а):
содержится в ветке реестра HKLMSoftwareMicrosoftWindows NTCurrentVersionAeDebug

Auto-1
Debugger-drwtsn32 -p %ld -e %ld -g
UserDebuggerHotKey - 0

Версия системы: 5.1, сборка 2600 xpsp 080413-2111:sp-3
Проц - x86, ADM Athlon XP 2500+ (1.83Гц, 512 МБ ОЗУ)

карма: 0

0
Ответов: 3889
Рейтинг: 362
#71: 2011-10-18 16:23:06 ЛС | профиль | цитата
Neo, замечательно.

Для NT5.x действия такие:

Заходим в систему под Администратором
Пуск - Выполнить... (WIN+R)
набираем drwtsn32 -i + Enter
Появится окошко о том, что мы настроили стандартный отладчик приложений
набираем drwtsn32 + Enter
Появляется окошко отладчика
Укажите Пути до журнала и копии памяти, желательно - корень НЕсистемного диска
Тип дампа - полный
Устанавливаем сохранение всех копий контекстов для потоков
По вкусу можно поставить галочки о визуальном и звуковом оповещениях
Добиваетесь вылета программы, в окне об ошибке жмём ОТМЕНА
Ждём создания файлов (если памяти использовалось много, придётся подождать)
Файлы журнала и дампа ужимаете в архив вместе с программой и выкладывате где-нибудь в доступном месте

Если программа использовала ОЧЕНЬ много памяти, то можно сперва выложить только .log, а галочку создания файла аварийной копии памяти снять.
карма: 1

0
Ответов: 704
Рейтинг: 7
#72: 2011-10-18 22:48:26 ЛС | профиль | цитата
1nd1g0, а сильно Вы будете смеяться, если я перенесу все мои звуковые данные в DLL, вместо отдельной программы? Ну как-то мозолит мне глаза еще одна висящая программа, которую нужно запускать постоянно и следить за ней (пусть и программно). Вот хочу еще несколько функций громоздких отдать на обработку в других программулинках - получится куча микро-программулинок .
карма: 0

0
Ответов: 3889
Рейтинг: 362
#73: 2011-10-19 02:40:53 ЛС | профиль | цитата
Neo писал(а):
перенесу все мои звуковые данные в DLL

Смысла в этом - только лёгкая сменяемость dll без перекомпиляции основного приложения. При фатальном сбое в библиотеке всё равно будет завершено приложение целиком, т.к. у них общий контекст.
карма: 1

1
Голосовали:Neo
Ответов: 704
Рейтинг: 7
#74: 2011-10-20 17:23:08 ЛС | профиль | цитата
Жду вторые сутки - перестает работать по разным причинам, но только не в следствии ошибки. Уже даже сны снятся, что оно вылетело и памяти было занято 3Гб Проверил - пока заняло памяти 50Мб на пустом месте... Куда-то она пожирается. Но работает без ошибки...
------------ Дoбавленo в 17.21:
Хотя это наверняка из-за операций по перемещению/копированию файлов из программы термометра весом 1,5Мб.
------------ Дoбавленo в 17.23:
Т.к. программа термометра занимает тоже не мало - 32Мб на ровном месте.
карма: 0

0
Ответов: 3889
Рейтинг: 362
#75: 2011-10-20 23:09:17 ЛС | профиль | цитата
Neo писал(а):
Куда-то она пожирается

Это называется утечкой памяти, к сожалению, у нас в некоторых компонентах она может проявляться по разным причинам, например, выделяется глобально доступная область памяти под временные данные и не уничтожается до завершения программы, и с каждой итерацией циклов выделяется всё больше. В таких случаях я помещаю их в динамический контейнер (...Ex) с самоуничтожением после отработки (Mode = OnlyOnce) либо создаю и уничтожаю вручную, по мере надобности(Mode=Dynamic). После отработки будут вызваны деструкторы всех объектов и структур в пределах элементов контейнера и менеджер памяти перераспределит её заново. Пример есть всё в том же плагине iqsearch для конструктора, что я опубликовал последним.
карма: 1

1
Голосовали:Neo
Сообщение
...
Прикрепленные файлы
(файлы не залиты)