Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Ошибка при отладке программы на с++ 6 visual studio  (Прочитано 10627 раз)
0 Пользователей и 1 Гость смотрят эту тему.
ann_nef
Помогающий

ru
Offline Offline
Пол: Женский

« : 28-10-2010 05:30 » 

Ошибка такая:
First-chance exception in <имяпрограммы>.exe(NTDLL):0xc0000008:Invalid Handle.
Причём отладчик вылетает почти сразу при запуске.
А без отладчика программа работает.
В инете видела вопросы об этой ошибке, но не увидела решения.
Записан
resource
Молодой специалист

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 28-10-2010 05:35 » 

Какой отладчик? Студийный? Как понять "отладчик вылетает", это всмысле студия падает или как?
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #2 : 28-10-2010 05:36 » 

ann_nef, а что делаешь, когда ошибка выскакивает ?
Записан

ann_nef
Помогающий

ru
Offline Offline
Пол: Женский

« Ответ #3 : 28-10-2010 08:12 » 

Ошибка выскакивает -нажимаю ОК- появляется окно на ассемблере с командой , кот.не нравится.
А я просто завершаю процесс отладки: SHIFT - F5
Записан
resource
Молодой специалист

ru
Offline Offline
Пол: Мужской

« Ответ #4 : 28-10-2010 08:19 » 

Всё это крайне интересно, действительно ли ошибка в ntdll, и почему адрес ядерный. Только пока ничего неясно.
Ты отладку не завершай, а нажми сперва в меню "call stack" (кажется это в меню Debug (не помню уже)). Разверни окно стэка, сделай скриншот и выложи его.
« Последнее редактирование: 28-10-2010 08:22 от resource » Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #5 : 28-10-2010 08:29 » 

кот.не нравится.
почему Жаль

Добавлено через 1 минуту и 18 секунд:
Ошибка выскакивает
и всё-таки, когда ошибка выскакивает - в InitInstance , или до, или после него ? (хотя бы это скажи)
« Последнее редактирование: 28-10-2010 08:31 от Алексей1153 » Записан

Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #6 : 28-10-2010 08:56 » 

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

Добавлено через 1 минуту:
кот.не нравится.
почему Жаль

Лёш, ну какой же девушке, такой лохматый, небритый кот понравится! Ага Хоть бы причесался.
« Последнее редактирование: 28-10-2010 08:57 от Джон » Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
ann_nef
Помогающий

ru
Offline Offline
Пол: Женский

« Ответ #7 : 28-10-2010 09:16 » 

дддаа
« Последнее редактирование: 28-10-2010 10:26 от ann_nef » Записан
resource
Молодой специалист

ru
Offline Offline
Пол: Мужской

« Ответ #8 : 28-10-2010 09:21 » 

ann_nef, я конечно, не администратор и не модератор, но вроде как указал один из путей коллективного исследования проблемы.
Записан
ann_nef
Помогающий

ru
Offline Offline
Пол: Женский

« Ответ #9 : 28-10-2010 09:21 » 

Не вижу своего сообщения, поэтому повторю:
RESOURCE, спасибо, благодаря вашей подсказке о стеке разобралась откуда ошибка лезла.
Записан
resource
Молодой специалист

ru
Offline Offline
Пол: Мужской

« Ответ #10 : 28-10-2010 09:25 » 

Ну так надо же довести до нас эту информацию. Нам ведь тоже интересно.
Записан
ann_nef
Помогающий

ru
Offline Offline
Пол: Женский

« Ответ #11 : 28-10-2010 09:44 » 

Инвалидный хэндл образовался или получился из-за того, что не всё закомментировала в программе для отключения работы с прибором( в тот момент я отлаживала то,что к нему отношения не имеет).

Получилась ситуация, что пыталась закрыть хэндл, который не открыт и не создан.( CloseHandle ).

Не знаю поможет ли это кому-то.
Записан
resource
Молодой специалист

ru
Offline Offline
Пол: Мужской

« Ответ #12 : 28-10-2010 09:56 » 

Поможет

Добавлено через 28 минут и 23 секунды:
Разрешите подытожить.

Мне вот просто интересно стало, почему без отладчика не падало. Оказалось всё банально. Просто функция NtClose (а именно она вызывается в конечном итоге) так устроена. Но вообще можно падать и без отладчика. В системе есть, так называемые, глобальные отладочные флаги, про которые наверняка знают все многие системные разработчики. Есть в составе Debugging Tools такая утилита gflags, которая позволяет рулить этими флагами. Если установить флаг FLG_ENABLE_CLOSE_EXCEPTIONS (в gflags это зовется "enable close exception"), то можно падать и без отладчика.

ann_nef, на самом деле, тебе повезло что исключение вообще возникло (исключения это хорошо (как и БСОДы)). Так ты смогла обнаружить и устранить проблему. Было бы убийственно, если в таблице хэндлов оказался бы (волей случая) хэндл с таким же значением как тот, что ты передавала. В таком случае,  он бы просто закрылся. И выявить баг тут было бы....... мягко говоря, очень сложно. Зато теперь ты приобрела немного умения пользоваться отладчиком и узнала, что такое callstack и насколько он полезен.
« Последнее редактирование: 28-10-2010 10:24 от resource » Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines