OberonCore https://forum.oberoncore.ru/ |
|
Прервать выполнение программы https://forum.oberoncore.ru/viewtopic.php?f=1&t=2276 |
Страница 1 из 1 |
Автор: | Роман М. [ Понедельник, 25 Январь, 2010 18:09 ] |
Заголовок сообщения: | Прервать выполнение программы |
Как прервать выполнение программы (как в Delphi/Free Pascal Ctrl-F2) ? |
Автор: | Илья Ермаков [ Понедельник, 25 Январь, 2010 18:11 ] |
Заголовок сообщения: | Re: Прервать выполнение программы |
Когда зависла Ваша команда? Ctrl-Break. Документацию и руководства не читаем ![]() |
Автор: | Созерцатель [ Понедельник, 25 Январь, 2010 18:20 ] |
Заголовок сообщения: | Re: Прервать выполнение программы |
Илья Ермаков писал(а): Когда зависла Ваша команда? Ctrl-Break. Документацию и руководства не читаем Не знаю. У меня до сих пор бесконечный цикл ни разу прервать не удалось! Только снятием ББ из менеджера задач!
![]() |
Автор: | Илья Ермаков [ Понедельник, 25 Январь, 2010 18:30 ] |
Заголовок сообщения: | Re: Прервать выполнение программы |
Под Вайном запускаете? Не угадал? |
Автор: | Роман М. [ Понедельник, 25 Январь, 2010 21:00 ] |
Заголовок сообщения: | Re: Прервать выполнение программы |
Илья Ермаков писал(а): Когда зависла Ваша команда? Ctrl-Break. Документацию и руководства не читаем ![]() Не помогает. Вывод в журнал был слишком долог и я не смог его прервать. Система - Win XP. |
Автор: | Info21 [ Понедельник, 25 Январь, 2010 21:03 ] |
Заголовок сообщения: | Re: Прервать выполнение программы |
Роман М. писал(а): Вывод в журнал был слишком долог и я не смог его прервать. Значит, ББ -- точно не с Информатики-21.
Система - Win XP. |
Автор: | Борис Рюмшин [ Понедельник, 25 Январь, 2010 21:26 ] |
Заголовок сообщения: | Re: Прервать выполнение программы |
Info21 писал(а): Роман М. писал(а): Вывод в журнал был слишком долог и я не смог его прервать. Значит, ББ -- точно не с Информатики-21.Система - Win XP. Сборка тут не при чём. Иногда Ctrl+Break действительно не срабатывает. |
Автор: | ==== [ Понедельник, 25 Январь, 2010 22:28 ] |
Заголовок сообщения: | Re: Прервать выполнение программы |
В Delphi в тело цикла вставляется метод Aplication.ProcessMessages - "Приостанавливает работу программы до тех пор, пока не будут обработаны все сообщения". Не будет никаких проблем с интерфейсом. |
Автор: | Борис Рюмшин [ Понедельник, 25 Январь, 2010 22:35 ] |
Заголовок сообщения: | Re: Прервать выполнение программы |
Геннадий Тышов писал(а): В Delphi в тело цикла вставляется метод Aplication.ProcessMessages - "Приостанавливает работу программы до тех пор, пока не будут обработаны все сообщения". Не будет никаких проблем с интерфейсом. В BlackBox это тоже не проблема и случается оно очень редко. Олег Цилюрик помнится говорил, что завалить можно даже не убиваемый в обычных условиях QNX. Но для этого намеренно надо постараться. Так и тут. Если заведомую дрянь не писать, то всё нормально будет. |
Автор: | Александр Ильин [ Понедельник, 25 Январь, 2010 23:21 ] |
Заголовок сообщения: | Re: Прервать выполнение программы |
Роман М. писал(а): Вывод в журнал был слишком долог и я не смог его прервать. Система - Win XP. Борис Рюмшин писал(а): Сборка тут не при чём. Иногда Ctrl+Break действительно не срабатывает. Пример в студию. Хоть с выводом в лог, хоть ещё с чем. Прошу как некогда дорабатывавший код прерывателя Ctrl+Break. По возможности помогу. У меня тоже WinXP, всё срабатывает. |
Автор: | Сергей Губанов [ Понедельник, 25 Январь, 2010 23:32 ] |
Заголовок сообщения: | Re: Прервать выполнение программы |
>> завалить можно даже не убиваемый >> Пример в студию. Я знаю следующий пример. Нужно чтобы был файл подкачки. Создаёте в ББ много объектов так чтобы кончилась оперативная память и ББ начал шуршать жёстким диском. Когда надоест слушать шуршание диска можно нажать Ctrl+Break, но вот дождаться когда же все рассосётся терпения едва ли хватит. Не рассосётся, и дело вовсе не в реализации обработчика прерывания, а в том что ББ память обратно в систему не отдаёт, так и будет шуршать диском пока его не убьёшь. |
Автор: | Valery Solovey [ Вторник, 26 Январь, 2010 15:48 ] |
Заголовок сообщения: | Re: Прервать выполнение программы |
Так это же не пример зацикливания. Здесь причина отказа совсем другая. |
Автор: | Роман М. [ Вторник, 26 Январь, 2010 16:49 ] |
Заголовок сообщения: | Re: Прервать выполнение программы |
Я пользуюсь версией 1.5. Запустил программу-обёртку для внешней DLL. В обёртке интенсивно производятся вычисления, а результаты выводятся в журнал. Нажатие на Ctrl-Break не помогает - происходит "заморозка" вывода, процессор забивается под самую завязку и через некоторое время "оттаивает" (~минута-две). |
Автор: | ==== [ Среда, 27 Январь, 2010 22:00 ] |
Заголовок сообщения: | Re: Прервать выполнение программы |
Смотрите тему "Зависание" BlackBox при длительных вычислениях от 14 Март, 2006 http://forum.oberoncore.ru/viewtopic.php?p=1469#p1469 |
Автор: | Илья Ермаков [ Пятница, 29 Январь, 2010 17:08 ] |
Заголовок сообщения: | Re: Прервать выполнение программы |
Штука в том, что прерыватель смотрит, чтобы в момент прерывания процесс находился внутри модулей ББ (а не во внешних библиотеках, в том числе не внутри WinApi-вызовов и т.п.). Если зациклившаяся программа интенсивно уходит во внешние библиотеки, то вероятность поймать её в момент нахождения внутри ББ-шных модулей мала. В некоторых случаях - исчезающе мала. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |