Visual Studio сбивает с толку исключение - PullRequest
1 голос
/ 16 марта 2011

Для курса по робототехнике, который я беру, мы должны загрузить код с http://www.cs.okstate.edu/~katchou/vboost.cpp и поместить его в проект с тем же именем.Когда я отлаживал программу (перейдя в «Отладка»> «StartDebugging в режиме Release»), я получал сообщение об ошибке:

 First-chance exception at 0x6eedfb59 (msvcr100.dll) in vboost.exe: 0xC0000005:
Access   violation reading location 0x415c3a43.
    Unhandled exception at 0x6eedfb59 (msvcr100.dll) in vboost.exe: 0xC0000005: 
Access violation reading location 0x415c3a43.

После остановки процесса отладки и всплывающем окне было сказано:

   Unhandled exception at 0x6eedfb59 (msvcr100.dll) in vboost.exe: 0xC0000005: 
Access violation reading location 0x415c3a43.

Во время отладки без опции игнорирования и нажатия кнопки продолжения просто снова появляется то же самое окно.

Затем открывается другой файл c под названием strtol.c, и в окне «auto» я замечаю, что указатель nptr(который является параметром функции strtoxl) получает некоторое значение, а затем он говорит [bad ptr], что, как я предполагаю, означает, что указатель плохой.Ниже это сообщение об ошибке: Error: expression cannot be evaluated.Значение не равно 0, поэтому оно не равно NULL.Программа останавливает отладку в строке 99 strol.c.

Когда я делаю то же самое в режиме отладки, программа работает нормально, пока не начнет загружать имена файлов изображений, найденных в другом файле.Затем он выходит из программы с 1 вместо обычного 0.

Это может показаться немного расплывчатым, но, честно говоря, я не уверен, что происходит не так.Я попытался найти в коде, который я скачал с этого сайта, функции strtol или strtoxl, которых нет ни в одной из них, и заметил в стеке вызовов, что msvcr100.dll, похоже, обращается к файлу strtol.c, но я не уверен, почемуили как.Будем благодарны за любую помощь.

Особенности: Хост ОС: Ubuntu 10.10 Гость Хост: Windows 7 с использованием VirtualBox Программное обеспечение: Visual Studio 2010 Express

Ответы [ 2 ]

4 голосов
/ 16 марта 2011

Приложение требует 5 параметров командной строки и может принимать 2 необязательных - оно вылетит, если вы не передадите первые 5.

См. Строки 364-431 в файле cpp.

  1. // Имя группы классификаторов (т. Е. New.clas)
  2. // Количество положительных изображений.
  3. // Инициализация счетчика отрицательных изображений.
  4. // Количество уровней классификатора в каскаде.
  5. // Максимальное количество функций.
  6. (необязательно) -t, -v, -tab, -mem или -eyefull
  7. (необязательно) -filter

В VS2008 вы устанавливаете их в свойствах проекта / отладке / аргументах команд - VS2005 / 2010 должны быть одинаковыми или похожими.

1 голос
/ 16 марта 2011

Вы запускаете программу, не предоставляя ей ожидаемых аргументов командной строки, и она падает при попытке доступа к ней. Исправьте программу, чтобы она была более информативной - и / или - передайте правильные аргументы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...