【问题标题】:Debugging x86 .NET application on Windows x64 in VS2008在 VS2008 中在 Windows x64 上调试 x86 .NET 应用程序
【发布时间】:2011-01-02 03:39:11
【问题描述】:

我使用的是 x64 版本的 Windows 7。我的应用程序使用了一些无法在 x64 上下文中加载的 COM 服务器(通常是本机 x86 COM 服务器)。所以我决定使用WOW 将其作为 x86 应用程序运行,因此我将平台目标设置为 x86。

但是当我尝试调试它时,Visual Studio 2008 调试器开始为所有源文件显示类似“源文件不同......”的消息。这种行为的原因是什么?这个问题就诞生在那里"The source file is different...." message in Visual Studio 2008 is result of debugging x32 apps on x64 Windows

更新:我清理了解决方案,重建了解决方案,删除了 obj、bin 等文件夹,重新启动计算机,重新安装了 Visual Studio……那么,还有什么问题?

Update2:如果您创建新的 Windows 应用程序项目并将目标平台更改为 x86,您将看到此问题。但是如果你从项目中删除 Settings1.settings 麻烦就解决了!!。有什么想法吗?

更新3http://social.msdn.microsoft.com/Forums/en-US/vsdebug/thread/bc297668-65b4-46e8-969e-c7a6340d33b6

【问题讨论】:

  • 您是否清理了项目的输出文件夹并检查了构建日志是否确实成功了?
  • 我在问题描述中回答了。
  • 如果您将目标平台切换回 x64,调试又可以工作了吗?
  • 是的,但它因异常而失败(库不是 fount,它是关于将 x32 库加载到 x64 上下文,我写过它)。

标签: c# visual-studio debugging visual-studio-2008 64-bit


【解决方案1】:

您收到的错误消息与调试 WOW64 位应用程序无关。这里的问题更小,因为 Visual Studio 在 WOW64 中运行 32 位进程。因此,您实际上是在进行 x86 -> x86 调试会话,而不是 x64 -> x86。

这里发生的情况是 Visual Studio 正在从 PDB 中读取源文件的校验和,并且它与您用于调试应用程序的文件的校验和不匹配。最可能的原因是

  • 过时的 PDB
  • 使用了不正确的源文件。这在分支场景中比您想象的更常见,您可以轻松获取文件的错误版本。

我通常调试的方式是

  • 关闭VS并手动删除所有二进制文件和二进制目录
  • 重启VS并重建
  • 关闭VS
  • 重启 VS 并附加到正在运行的项目而不打开解决方案
  • 然后手动打开文件

【讨论】:

    【解决方案2】:

    Windows 7 默认为 VS 2008 设置 Windows Xp sp 3 兼容模式。将兼容性更改为 Windows Vista SP2 模式已经解决了问题。

    【讨论】:

      【解决方案3】:

      您还可以检查 x86 构建类型。当您创建它时,您可能不会从默认构建中复制设置,因此当您运行应用程序时,您的任何代码都不会构建。

      打开解决方案属性并检查配置属性\配置页面。然后确保在 Build 下为您正在使用的 Config/Platform 组合检查所有项目。

      【讨论】:

      • 确实,在当前配置中从构建中排除的项目对我来说似乎是一个常见的错误。但是,彻底清除解决方案(就像 OP 所做的那样)应该会让您注意到这一点吗?
      • 是的。但是他忽略了他可能没有看到的编译器错误/构建消息。此外,如果他告诉它在清理后显式构建,他也不会看到这个问题。
      • 我还没有制作 x86“构建类型”,我刚刚将项目属性的构建页面上的平台目标从任何 CPU 更改为 x64。就是这样。
      猜你喜欢
      • 1970-01-01
      • 2010-09-08
      • 2011-10-10
      • 1970-01-01
      • 2023-03-30
      • 2010-09-09
      • 1970-01-01
      • 2010-09-28
      • 1970-01-01
      相关资源
      最近更新 更多