【问题标题】:Is it possible to write a Debugger Visualizer for Visual Studio 2010 to display 64-bit .NET programs?是否可以为 Visual Studio 2010 编写调试器可视化工具来显示 64 位 .NET 程序?
【发布时间】:2015-03-22 13:11:36
【问题描述】:

是否可以为 Visual Studio 2010 编写一个 Debugger Visualizer 来显示 64 位 .NET 程序的数据?

我已经为 32 位编程编写了它们,但我无法设法使用或编译它们以用于 64 位应用程序。有什么建议吗?

【问题讨论】:

  • “我无法使用或编译它们以用于 64 位应用程序” - 为什么,会发生什么?不是.NET框架的属性部分——它怎么能不编译?而且,我不愿意这么说,但是您不能使用具有更好 64 位支持的更新的 Visual Studio,例如不是大企业应该可以用VS2013 Community吧?
  • 当我激活 Visualizer 时,JIT 调试器窗口中会出现 BadImageFormatException。 Visualizer 加载一个 DLL(它也加载一个 C++ dll)。但是 Visualizer 无法处理 64 位数据。发生异常。 Visualizer 本身已编译为 64 位。这与VS是32位的事实有关吗?我们仍在使用 2010。我们只是在有时间的时候测试 2013,还没有每天都使用它。
  • 最明显的解释是这个C++ DLL是一个32位的可执行文件。您必须提供 64 位版本。
  • 您有 2 个选择,@HansPassant 提到的一个是针对您的所有应用程序的 32 位,别担心,因为 Windows 会由 WOW 为您处理这个

标签: c# vb.net visual-studio-2010 debugging 32bit-64bit


【解决方案1】:

我刚刚遇到了同样的问题。我使用 Visual Studio 2013,我们的工作项目是 64 位的。我构建了一个 64 位版本的自定义可视化工具,并按照 MSDN walk-through 将其放入 Visual Studio 安装文件夹中。

我认为因为 Visual Studio 是一个 32 位进程,它无法加载 64 位目标程序集。结果,您会在对话框中看到 JIT 异常。

总有一天,他们只需要发布 64 位版本 - 我希望如此! :)

【讨论】:

    【解决方案2】:

    您需要将可视化器和要可视化的类型放在使用 Any CPU 平台编译的单独程序集中。

    可视化工具由 Visual Studio 显示,它是一个 x86 进程,因此它无法加载为 x64 平台构建的程序集。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-17
      • 2011-02-12
      • 2011-11-17
      • 1970-01-01
      相关资源
      最近更新 更多