Кстати, а подскажите, onClose пишет что событие происходит только на главной форме при закрытии - это типа в мультик уже событие не пройдет? Или в ChildPanel какую-нибудь?
------------ Дoбавленo в 23.18:
Вот exe. Ошибка из него. http://hm-online.com.ua/Dom.zip
Этот топик читают: Гость
Ответов: 704
Рейтинг: 7
|
|||
карма: 0 |
|
Ответов: 3889
Рейтинг: 362
|
|||
Neo писал(а): это типа в мультик уже событие не пройдет? Или в ChildPanel какую-нибудь?Это, типа, оно только из главной формы (MainForm) выходит перед завершением, иэ ChildForm - нет, не смотря на то, что там эта точка есть в списке скрытых. |
|||
карма: 1 |
|
Ответов: 704
Рейтинг: 7
|
|||
Кстати, а реально разбирать ошибки самостоятельно с такими базовыми знаниями, как у меня? Чем это можно сделать? Не охота висеть на шее у Вас
![]() |
|||
карма: 0 |
|
Ответов: 3889
Рейтинг: 362
|
|||
Neo писал(а): с такими базовыми знаниями, как у меняСмотря на чём "базируются" знания. Тут требуются знания о внутренней структуре исполнимых файлов (exe), работе процессора, памяти и организации ядра операционной системы, плюс навык использования программных средств отладки и декомпиляции. Помимо этой "базы" требуются различные знания из предметных областей, смежных с исследуемыми программами. |
|||
карма: 1 |
|
Ответов: 704
Рейтинг: 7
|
|||
[offtop]1nd1g0, всего-то? А, так это все я как раз случайно умею
![]() |
|||
карма: 0 |
|
Ответов: 3889
Рейтинг: 362
|
|||
Neo писал(а): Ошибка из него. http://hm-online.com.ua/Dom.zipВ этом исполнимом файле по смещению A91EC находятся бессмысленные бинарные данные (по периодичности - то ли картинка, то ли звук), а не программа. Либо ошибка всё-таки не из него, либо что-то передало управление данным, надо смотреть стек. Neo писал(а): разбирать ошибки самостоятельно Есть ещё вариант давать полный дамп памяти процесса в момент ошибки (в NT6.1 его можно сделать даже диспетчером задач). Бывает система (при включенной функции отчётов) предлагает отослать информацию разработчикам, так вот, для уточнения диагноза её можно отослать мне ![]() Neo писал(а): так это все я как раз случайно умеюТогда осталось поставить хотя бы отладчик и вперёд. |
|||
карма: 1 |
|
Ответов: 704
Рейтинг: 7
|
|||
[offtop]1nd1g0, я так и знал! Я подозревал давно, что Вы разработчик Windows!
![]() А какой именно стек? Имеется в виду системный стек какой-то или стек в моей программе? |
|||
карма: 0 |
|
Разработчик
Ответов: 26303
Рейтинг: 2146
|
|||
[offtop]
Neo писал(а): Я подозревал давно, что Вы разработчик Windows!А вот это -- хрен его знает. Чем черт не шутит ![]() |
|||
карма: 22 |
|
Ответов: 3889
Рейтинг: 362
|
|||
Neo писал(а): Имеется в виду системный стекОтвет содержится в вопросе. Neo писал(а): Вот exe. Ошибка из него. http://hm-online.com.ua/Dom.zipНашёл место возникновения ошибки - она происходит в деструкторе TClassMainForm. Кто-то повредил или неправильно зарегистрировал адрес своего деструктора из таблицы деинициализации. ------------ Дoбавленo в 11.26: Neo, какая у Вас ОС (разрядность, версия ядра) и что у Вас содержится в ветке реестра HKLMSoftwareMicrosoftWindows NTCurrentVersionAeDebug ![]() |
|||
карма: 1 |
|
Ответов: 704
Рейтинг: 7
|
|||
1nd1g0 писал(а): содержится в ветке реестра HKLMSoftwareMicrosoftWindows NTCurrentVersionAeDebugAuto-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 |
|
Ответов: 3889
Рейтинг: 362
|
|||
Neo, замечательно.
Для NT5.x действия такие: Заходим в систему под Администратором Пуск - Выполнить... (WIN+R) набираем drwtsn32 -i + Enter Появится окошко о том, что мы настроили стандартный отладчик приложений набираем drwtsn32 + Enter Появляется окошко отладчика Укажите Пути до журнала и копии памяти, желательно - корень НЕсистемного диска Тип дампа - полный Устанавливаем сохранение всех копий контекстов для потоков По вкусу можно поставить галочки о визуальном и звуковом оповещениях Добиваетесь вылета программы, в окне об ошибке жмём ОТМЕНА Ждём создания файлов (если памяти использовалось много, придётся подождать) Файлы журнала и дампа ужимаете в архив вместе с программой и выкладывате где-нибудь в доступном месте Если программа использовала ОЧЕНЬ много памяти, то можно сперва выложить только .log, а галочку создания файла аварийной копии памяти снять. |
|||
карма: 1 |
|
Ответов: 704
Рейтинг: 7
|
|||
1nd1g0, а сильно Вы будете смеяться, если я перенесу все мои звуковые данные в DLL, вместо отдельной программы? Ну как-то мозолит мне глаза еще одна висящая программа, которую нужно запускать постоянно и следить за ней (пусть и программно). Вот хочу еще несколько функций громоздких отдать на обработку в других программулинках - получится куча микро-программулинок
![]() |
|||
карма: 0 |
|
Ответов: 3889
Рейтинг: 362
|
|||
Neo писал(а): перенесу все мои звуковые данные в DLLСмысла в этом - только лёгкая сменяемость dll без перекомпиляции основного приложения. При фатальном сбое в библиотеке всё равно будет завершено приложение целиком, т.к. у них общий контекст. |
|||
карма: 1 |
| ||
Голосовали: | Neo |
Ответов: 704
Рейтинг: 7
|
|||
Жду вторые сутки - перестает работать по разным причинам, но только не в следствии ошибки. Уже даже сны снятся, что оно вылетело и памяти было занято 3Гб
![]() ------------ Дoбавленo в 17.21: Хотя это наверняка из-за операций по перемещению/копированию файлов из программы термометра весом 1,5Мб. ------------ Дoбавленo в 17.23: Т.к. программа термометра занимает тоже не мало - 32Мб на ровном месте. |
|||
карма: 0 |
|
Ответов: 3889
Рейтинг: 362
|
|||
Neo писал(а): Куда-то она пожираетсяЭто называется утечкой памяти, к сожалению, у нас в некоторых компонентах она может проявляться по разным причинам, например, выделяется глобально доступная область памяти под временные данные и не уничтожается до завершения программы, и с каждой итерацией циклов выделяется всё больше. В таких случаях я помещаю их в динамический контейнер (...Ex) с самоуничтожением после отработки (Mode = OnlyOnce) либо создаю и уничтожаю вручную, по мере надобности(Mode=Dynamic). После отработки будут вызваны деструкторы всех объектов и структур в пределах элементов контейнера и менеджер памяти перераспределит её заново. Пример есть всё в том же плагине iqsearch для конструктора, что я опубликовал последним. |
|||
карма: 1 |
| ||
Голосовали: | Neo |