Дорогие лингвофорумчане, наверняка у многих из вас при работе за компом в икспишке когда-нибудь да всплывало сообщеньице, что типа создан отчёт об ошибке, который поможет устранить ту или иную возникшую проблемку с какой-то программой или приложением к ней, чтобы больше такого не повторялось. Затем можно подключиться к Нету и отправить, а можно проигнорировать и окошко, и его содержимое. Лично у меня первый путь действительно помогает при недоразумениях :yes: :3tfu:, а вот второй влечёт его повторение. :( А как вы поступаете, когда видите подобное сообщение? И доверяете ли вы этим отчётам? Также хотелось бы выяснить у вас поточней, откуда вообще берутся такие отчёты? Заранее всем спасибо, Тася. :)
Когда программа выполняет недопустимое действие (пытается писать или читать по адресу который писать или читать нельзя, в коде программы содержится операция, не поддерживаемая исполняющим её микропроцессором и т. п.) возникает исключительная ситуация. Система, обрабатывая эту исключительную ситуацию, перед тем как заставить процесс умереть может вызвать отладчик. Когда включен режим создания отчёта об ошибках, штатный отладчик «Доктор Ватсон» создаёт диагностический отчёт, который и предлагается отправить в Майкрософт.
Для обычного пользователя смысла в этом отчёте никакого нет. Поэтому, если нет намерения отправлять отчёт разработчикам, его можно выключить.
Цитата: myst от февраля 19, 2009, 14:39
Когда программа выполняет недопустимое действие (пытается писать или читать по адресу который писать или читать нельзя, в коде программы содержится операция, не поддерживаемая исполняющим её микропроцессором и т. п.)
А почему программа может начать выполнять эти недопустимые для неё действия? Только по причине воздействия вирусной программы? :what:
Цитировать
Когда включен режим создания отчёта об ошибках, штатный отладчик «Доктор Ватсон» создаёт диагностический отчёт, который и предлагается отправить в Майкрософт.
Значит, этот отладчик первоначально включен в XP по умолчанию? Я же его специально не активизировала. И что конкретно происходит в системе после отправки отчёта? :???
Цитировать
Для обычного пользователя смысла в этом отчёте никакого нет. Поэтому, если нет намерения отправлять отчёт разработчикам, его можно выключить.
А для меня есть. :) К счастью, помогает он мне по-дружески. :)
Цитата: "Тася" от
А почему программа может начать выполнять эти недопустимые для неё действия? Только по причине воздействия вирусной программы?
Чаще всего это ошибки разработчиков программы.
Цитата: "Тася" от
И что конкретно происходит в системе после отправки отчёта?
Процесс программы убивает себя.
Цитата: "Тася" от
К счастью, помогает он мне по-дружески.
Чем помогает? :???
Цитата: "myst" от
Процесс программы убивает себя.
Ну уж не сам процесс, а ОС.
Цитата: "Алексей Гринь" от
Ну уж не сам процесс, а ОС.
Нет, именно процесс. Обработчики структурных исключений выполняются в контексте процесса, где возникло исключение, в том числе и обработчик по умолчанию.
Но обнаруживает ошибку (типа обращения к освобождённой памяти) и переключает выполнение кода (разворачивает стек, например) ведь ОС? Как это может делать сам процесс? То, что это происходит внутри контекста процесса - это понятно.
Цитата: "Алексей Гринь" от
Но обнаруживает ошибку (типа обращение к освобождённой памяти) и переключает выполнение кода (разворачивает стек, например) ведь ОС? Как это может делать сам процесс? То, что это происходит внутри контекста процесса - это понятно.
Первичный код обработки, конечно, выполняет ядро, а потом происходит переход непривилигированный режим и выполняется вызов зарегистированных обработчиков структурных исключений. В цепочке обработчиков всегда есть один, по умолчанию. Он тупо вызывает TerminateProcess (если я не ошибаюсь). Если других обработчиков нет, или они не отменяют вызов остальных, и таким образом очередь доходит до обработчика по умолчанию; процесс, выполняя его, вызывает TerminateProcess, чем и убивает себя. Примерно так.
А всё равно получается, что убивает ОС, получив команду TerminateProcess :) Хотя это философский вопрос: если я попросил друга застрелить меня - это самоубийство или нет? :)
Цитата: "Алексей Гринь" от
А всё равно получается, что убивает ОС, получив команду TerminateProcess
Ну это-то да. Просто, ядро ещё может без спросу пристрелить или по просьбе другого процесса. Вот и приходится выкручиваться, чтобы различить эти случаи. :)