Visual Studio令人困惑的异常

时间:2011-03-16 00:49:43

标签: c++ c visual-studio debugging crash

对于我正在参加的机器人课程,我们必须从http://www.cs.okstate.edu/~katchou/vboost.cpp下载代码并将其放入同名项目中。当我调试程序时(通过在发布模式下导航到Debug> StartDebugging),我收到错误消息:

 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并在“自动”窗口中我注意到指针nptr(函数strtoxl的参数)被赋予一些值然后它说[bad ptr]我假设意味着指针坏了。在此下面是一个错误说明:Error: expression cannot be evaluated。该值不为0,因此它不是NULL。程序在strol.c的第99行停止调试。

当我在调试模式下执行相同操作时,程序运行正常,直到它开始加载在另一个文件中找到的图像的文件名。然后它以1而不是通常的0退出程序。

这可能看起来有点模糊,但老实说我不确定会出现什么问题。我尝试搜索我从该站点下载的函数strtol或strtoxl,其中既没有存在,我在调用堆栈上发现msvcr100.dll似乎正在访问strtol.c文件,但我不知道为什么或如何。任何帮助将不胜感激。

具体细节: 主机操作系统:Ubuntu 10.10 访客主持人:使用VirtualBox的Windows 7 软件:Visual Studio 2010 Express

2 个答案:

答案 0 :(得分:4)

该应用程序需要5个命令行参数,并且可以选择2个 - 如果你没有通过前5个命令行,它就会崩溃。

参见cpp文件中的第364-431行。

  1. //分类器组的名称(即new.clas)
  2. //正面图片数量。
  3. //初始化负图像计数器。
  4. //级联中的分类器级别数。
  5. //最多功能。
  6. (可选)-t,-v,-tab,-mem或-eyefull
  7. (可选)-filter
  8. 在VS2008中,您可以在项目属性/调试/命令参数中设置它们 - VS2005 / 2010应该相同或类似。

答案 1 :(得分:1)

启动程序时不提供它所期望的命令行参数,并在尝试访问它时崩溃。修复程序以提供更多信息 - 和/或 - 传递正确的参数