【问题标题】:Visual Studio confusing exceptionVisual Studio 令人困惑的异常
【发布时间】:2011-03-16 00:49:43
【问题描述】:

对于我正在学习的机器人课程,我们必须从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.

在调试过程中没有忽略选项并按继续只会再次出现相同的窗口。

然后打开另一个名为 strtol.c 的 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

【问题讨论】:

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


    【解决方案1】:

    应用程序需要 5 个命令行参数,并且可以采用 2 个可选参数 - 如果您不通过前 5 个参数,它将崩溃。

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

    1. //分类器组的名称(即new.clas)
    2. //正片数量。
    3. //初始化负片计数器。
    4. // 级联中的分类器级别数。
    5. // 最大特征数。
    6. (可选)-t、-v、-tab、-mem 或 -eyefull
    7. (可选)-过滤器

    在 VS2008 中,您可以在项目属性/调试/命令参数中设置这些 - VS2005/2010 应该相同或相似。

    【讨论】:

    • 我本可以发誓我已经这样做了,但它一定已经删除了我输入的参数。非常感谢!
    • 我知道,你是怎么知道参数没有被传递的。比如错误的哪一部分让你这么想,或者它只是最有可能的错误类型?
    • @perplexed:我构建并运行它并在调试器中看到它崩溃的地方。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-02
      • 1970-01-01
      • 2022-01-21
      • 2022-01-17
      相关资源
      最近更新 更多