Использую буст в своих проектах,
когда происходит вылет скажем в boost::to_lower, или в других функциях буста,
вылетает MessageBox, как можно убрать его? т.е. если вылет произошел то прога падала а не давала MessageBox`ы
Здравствуйте, Socket, Вы писали:
S>Использую буст в своих проектах, S>когда происходит вылет скажем в boost::to_lower, или в других функциях буста, S>вылетает MessageBox,
А что за ошибка хоть и написано в этом MessageBox-е?
Здравствуйте, ArtDenis, Вы писали:
AD>Здравствуйте, Socket, Вы писали:
S>>Использую буст в своих проектах, S>>когда происходит вылет скажем в boost::to_lower, или в других функциях буста, S>>вылетает MessageBox,
AD>А что за ошибка хоть и написано в этом MessageBox-е?
Здравствуйте, Socket, Вы писали:
S>Здравствуйте, ArtDenis, Вы писали:
AD>>Здравствуйте, Socket, Вы писали:
S>>>Использую буст в своих проектах, S>>>когда происходит вылет скажем в boost::to_lower, или в других функциях буста, S>>>вылетает MessageBox,
AD>>А что за ошибка хоть и написано в этом MessageBox-е?
Здравствуйте, Socket, Вы писали:
S>Здравствуйте, Socket, Вы писали:
S>>Здравствуйте, ArtDenis, Вы писали:
AD>>>Здравствуйте, Socket, Вы писали:
S>>>>Использую буст в своих проектах, S>>>>когда происходит вылет скажем в boost::to_lower, или в других функциях буста, S>>>>вылетает MessageBox,
AD>>>А что за ошибка хоть и написано в этом MessageBox-е?
Очень похоже, что вылетает исключение. Это исключение никак не обрабатывается, что приводит к вызову std::terminate. Соответственно, надо или исключить возможность сгенерировать исключение, или обрабатывать его.
> S>>тут скрин крупнее > S>>http://img153.imageshack.us/my.php?image=42645518vn6.gif > > AD>Тут всё ясно. Ищи баг в совей проге > > А вообще такой дилетантский вопрос -- как запретить выскакивание этого окошка? Ну чтобы падала программа себе тихонечко и все.
видимо могут помочь set_terminate и свой обработчик
Posted via RSDN NNTP Server 2.1 beta
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Здравствуйте, eao197, Вы писали:
E>Здравствуйте, ArtDenis, Вы писали:
S>>>тут скрин крупнее S>>>http://img153.imageshack.us/my.php?image=42645518vn6.gif
AD>>Тут всё ясно. Ищи баг в совей проге
E>А вообще такой дилетантский вопрос -- как запретить выскакивание этого окошка? Ну чтобы падала программа себе тихонечко и все.
Здравствуйте, Кодт, Вы писали:
К>И что это? Результат вызова abort() / terminate() / непойманное исключение в отладочной версии CRT? К>Или какой-то хитрый расстрел памяти?
Думаю, достаточно включить в настройках дебагера остановку на подобных вещах, чтобы увидеть место где происходит сбой. А растрел памяти надо искать соответствующими утилитами. Короче, дело поправимое
Здравствуйте, ArtDenis, Вы писали:
К>>И что это? Результат вызова abort() / terminate() / непойманное исключение в отладочной версии CRT? К>>Или какой-то хитрый расстрел памяти?
AD>Думаю, достаточно включить в настройках дебагера остановку на подобных вещах, чтобы увидеть место где происходит сбой. А растрел памяти надо искать соответствующими утилитами. Короче, дело поправимое
Я имею в виду: из какого обработчика вылезает это окошко. (Просто я его никогда не видел раньше).
Похоже, что terminate().
У terminate() есть следующие причины
— исключение, перелетевшее через границу nothrow
— — из main()
— — из функции потока
— — из колбэк-функции, вызванной из недр ОС
— — из функции со спецификацией исключений
— исключение, возникшее при раскрутке стека после броска другого исключения
— явный вызов abort() или terminate(), например, из assert()
Отладчиком такие вещи особо не поймаешь. Придётся поизгаляться.
Хотя безусловно, дело поправимое.
... << RSDN@Home 1.2.0 alpha rev. 655>>
Перекуём баги на фичи!
Как запретить MessageBox`ы с сообщениями об ошибках
Здравствуйте, Вы писали:
S>Использую буст в своих проектах, S>когда происходит вылет скажем в boost::to_lower, или в других функциях буста, S>вылетает MessageBox, как можно убрать его?
S>т.е. если вылет произошел то прога падала а не давала MessageBox`ы
Хороший вопрос! Под Windows такого рода окошки могут возникать по разным причинам — срабатываение assert, необработанное исключение, access violations и др.
Соответственно, AFAIK не существует способа просто установить некий флаг, чтобы все такого рода сообщения подавлялись.
К>Я имею в виду: из какого обработчика вылезает это окошко. (Просто я его никогда не видел раньше).
Сдаётся мне что сообщение это из дремучих MS Windows 9x — в NT/2000/XP оно выглядит по-другому. Хотя — могу ошибаться...
>К>Я имею в виду: из какого обработчика вылезает это окошко. (Просто я его никогда не видел раньше). > Сдаётся мне что сообщение это из дремучих MS Windows 9x — в NT/2000/XP оно выглядит по-другому. Хотя — могу ошибаться...
Насколько я знаю, ошибаешься. Это сообщение CRT на abort и terminate.
Posted via RSDN NNTP Server 2.1 beta
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Здравствуйте, Socket, Вы писали:
S>Насколько я понял падение происходило из 3х оброботок 1 раз. S>после того как поставил Sleep(10), мессадж боксы больше не появляются.
S>Прошу прокоментировать знающих людей почему так происходит? в винде нельзя так быстро создавать треды?
Здравствуйте, TheBeard, Вы писали:
TB>Здравствуйте, Socket, Вы писали:
S>>Насколько я понял падение происходило из 3х оброботок 1 раз. S>>после того как поставил Sleep(10), мессадж боксы больше не появляются.
S>>Прошу прокоментировать знающих людей почему так происходит? в винде нельзя так быстро создавать треды?
TB>Похоже на вот эту
Здравствуйте, Socket, Вы писали:
S>Насколько я понял падение происходило из 3х оброботок 1 раз. S>после того как поставил Sleep(10), мессадж боксы больше не появляются.
Гонки какие-то.
Sleep() вытесняет текущий поток и даёт возможность стартовать потоку, запущенному по create_thread.
Без него — ты планируешь 200 потоков (один раз из трёх — система успевает вытеснить текущий поток на половине этого процесса).
Природу гонок можно выяснить, посмотрев на содержимое checker_thread().