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: Прервать выполнение программы

Роман М. писал(а):
Вывод в журнал был слишком долог и я не смог его прервать.
Система - Win XP.
Значит, ББ -- точно не с Информатики-21.

Автор:  Борис Рюмшин [ Понедельник, 25 Январь, 2010 21:26 ]
Заголовок сообщения:  Re: Прервать выполнение программы

Info21 писал(а):
Роман М. писал(а):
Вывод в журнал был слишком долог и я не смог его прервать.
Система - Win XP.
Значит, ББ -- точно не с Информатики-21.

Сборка тут не при чём.
Иногда 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/