English 中文(简体)
VS调试器出错了吗?代码抛出IndexOutOfRangeException:f++。
原标题:
  • 时间:2008-10-10 21:32:00
  •  标签:

为什么在下面代码中的"f++"部分抛出了一个异常("IndexOutOfRangeException was unhandled by user code")?

for (int f = 0; f < gnf; f++)  
{  
    fieldNames[g] = grid.FieldName(f);  
}  

错误在于代码的“fieldNames[g] = ...”部分,我的算法应该是:

for (int f = 0; f < gnf; f++)  
{  
    fieldNames[f] = grid.FieldName(f);  
}  

这不会崩溃。但是当错误的(顶部)代码运行时,调试器未显示“fieldNames [g] ...”行上的异常。

我现在没有使用线程,因此我不认为这是“在线程程序中进行调试异常是自杀性的”情况之一。

调试器为什么显示异常的位置不对?是否是优化或其他原因?还有其他人遇到过调试器像这样“错误”的情况吗?

最佳回答

可能是优化器的问题。您的构建设置为DEBUG还是RELEASE?

问题回答

我也遇到了类似的调试问题,并且我认为最常见的情况是调试(pdb)文件与代码不匹配。这可能是由多种问题引起的,包括:

  • The file has been modified, but the compilation of the library did not take place for whatever reason. So the .dll and .pdb file is not up to date with the source code.
  • The .pdb file was out of date because the compilation took place in RELEASE setup
  • The library exists in more than one place on file system, and current solution is somehow set up to look at a different .dll and .pdb file.

这种情况发生在调试信息都存在.pdb文件里,如果文件是过期的,它会在Visual Studio中标示出错误的行。

如果所有项目都在单一解决方案中,并且引用已正确设置,则通常重启Visual Studio可以解决此问题。(由于某些原因,编译可能不正确进行,重新启动可以解决这个问题 - 对我来说似乎是这样的...)





相关问题
热门标签