-1

我最近从 Windows XP 和 Visual Studio 2005 更新到 Windows 7 和 Visual Studio 2012,并带来了大量的 Fortran 代码(内置 VS 和英特尔编译器)。我现在遇到了几个可能相关或不相关的错误:

  1. 当调用 foo(char1,real1,real2) 形式的子例程时,其中 char1 在调用子例程和 foo 中的长度均为 200,我得到“forrtl:严重(408):fort:(18):虚拟字符变量 'char1 ' 长度为 200,大于实际变量长度 -858993460 Image PC Routine Line Source libifcoremdd.dll 02AED3FE Unknown Unknown Unknown Stack trace异常终止” 我环顾四周,该数字似乎是转换为整数的十六进制地址(0xcccccccc)。为什么它会传递一个无意义的地址而不是长度?

  2. 当我尝试调试问题时,我在子例程调用处设置了一个断点并尝试介入,我收到一个错误“No Source Available No symbols are loaded for any call stack frame. The source code cannot be display”

  3. 我还注意到我收到了几十个“无法找到或打开 PDB 文件”。似乎与我的源代码没有直接关系的错误。

不幸的是,该错误嵌入了数千行专有代码中,因此我无法将其全部发布,也无法通过一个简单的示例重现该错误。

有人对尝试的事情有任何建议吗?谢谢!

4

1 回答 1

0

没有符号...源代码都与 .pdb 文件有关。pdb 文件是在您构建代码时生成的。它就像一张地图,显示每一行代码的位置和位置。如果您尝试设置断点并得到一个实心红色圆圈,则它可以找到 pdb。如果你只是得到一个空的灰色圆圈,它就找不到 pdb 文件。将 pdb 文件从您构建代码的位置复制到可执行文件所在的位置,这应该可以解决该问题。不幸的是,在复制文件后,您需要退出 Visual Studio 并重新进入。它不会立即读取您将它放在那里的 pdb。

至于你的未初始化变量错误(一切都被c填充),你做了干净的构建吗?如果您从 XP 转移到 W7,是 XP32 到 W764 吗?您是否也移动了源或对象。如果是这样,您的可执行文件是 x86/win32 或 x64 还是两者兼而有之?首先尝试将所有内容构建为 x86/win32。看看这是否不起作用,然后看看代码生成选项:它们都是 MT、MTD、MD 还是 MDD?它们都应该是一样的。混合它们是一场等待发生的灾难(通常是当你向一些高级官员展示时)。

于 2013-04-13T20:59:30.570 回答