Форум программистов
 
Расширенный поиск
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail



Ответ
 
Опции темы
Старый 02.07.2017, 21:32   #1
fo,wf
Пользователь
 
Регистрация: 16.06.2017
Сообщений: 22
Репутация: 10
Вопрос как найти GetLastError

как? если писать после проблемных строк то оно может и не работать ведь проблемные строки могут закрыть программу из-за ошибки, так и не дойдя до GetLastError. А если в другой проге не роботает ведь, в винде ещё много-го разных процессов и откудо оно знает что это именно те проблемные строки?

Последний раз редактировалось fo,wf; 02.07.2017 в 21:34.
fo,wf вне форума   Ответить с цитированием
Старый 02.07.2017, 22:22   #2
Pavia
Лис
Профессионал
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 1,300
Репутация: 1333
По умолчанию

Цитата:
Сообщение от fo,wf Посмотреть сообщение
если писать после проблемных строк то оно может и не работать ведь проблемные строки могут закрыть программу из-за ошибки, так и не дойдя до GetLastError.
Большинство ошибок безобидные и проверяются на входи в функции API. Простым if() и если входные параметры не верные, то возвращается код ошибки. Или по выходу из вызова внутренних функций. Поэтому такой код выполняется корректно.
Другие ошибки обрабатываются, через ловушки ошибок. try-finally Перед вызовом опасного кода запоминается состояние программы и если ловушка поймает ошибку, то обработчик ошибки восстановит код к сохранённому состоянию. В самом худшем случае вас отбросит на самое начало работы программы. Если обработчика не нашлось, то программа закроется.
Потому вероятность того, что программа закроется от 1000 до 100 000.

Каждая программа запускается в отдельном адресном пространстве. Поэтому переменная с кодом ошибки у каждой программы своя. И программы никак не могут перепутать свои коды/строки ошибок. А в ядре аналогично для каждого процесса есть его участочек памяти. И функции должны сохранять данные в эти участки.
__________________
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .

Последний раз редактировалось Pavia; 02.07.2017 в 22:25.
Pavia вне форума   Ответить с цитированием
Старый 05.07.2017, 02:05   #3
DartSidius
Новичок
 
Регистрация: 05.07.2017
Сообщений: 3
Репутация: -7

icq: 234245234
По умолчанию

Цитата:
Сообщение от fo,wf Посмотреть сообщение
как? если писать после проблемных строк то оно может и не работать ведь проблемные строки могут закрыть программу из-за ошибки, так и не дойдя до GetLastError. А если в другой проге не роботает ведь, в винде ещё много-го разных процессов и откудо оно знает что это именно те проблемные строки?
Код:

LONG DebugInformator(PEXCEPTION_POINTERS p_excep)
{
   PEXCEPTION_RECORD p_excep_record = p_excep->ExceptionRecord;
   p_excep_record->ExceptionCode - тут код ошибки и вообще в p_excep_record много чего интересного

  return EXCEPTION_CONTINUE_EXECUTION;
}
__try
{
   //Здесь помещается критический код (а лучше весь).
}
__except (DebugInformator(_exception_info()))

Это реализация чисто под Си. В любом языке есть свои обработчики исключений. Можно также воспользоваться винапи SetUnhandledExceptionFilter

Последний раз редактировалось DartSidius; 05.07.2017 в 02:29.
DartSidius вне форума   Ответить с цитированием
Ответ



Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Windows.GetLastError()=995 Горизонт Win Api 1 15.11.2013 09:36
Работа с GetLastError calypso Win Api 5 02.03.2013 09:09
GetLastError WizarD.89 Общие вопросы C/C++ 1 30.01.2012 00:32
Ошибки. GetLastError() maxflint Win Api 2 17.04.2011 16:45
как отсортировать массив под данный отрезок и как минимум и максимум из него найти SIEGER Паскаль 1 20.11.2008 09:58




14:00.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

купить трафик


как улучшить посещаемость, а также решения по монетизации сайтов, видео и приложений

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru