【问题标题】:I can't debug native code running .NET assemblies in VS 2012 anymore我无法再在 VS 2012 中调试运行 .NET 程序集的本机代码
【发布时间】:2012-11-14 19:56:22
【问题描述】:

我有一个 Delphi 应用程序,它加载了一些我想要调试的 .NET 程序集。我不想调试 Delphi 代码,只想调试 .NET 程序集。

在 VS 2010 中,我所要做的就是让我的 .NET 代码的输出目录指向 Delphi 可执行文件夹,并设置 Start external program 指向可执行路径。当我按下 F5 时,它会自动启动 Delphi 代码,加载模块并准备调试。

现在我迁移到 VS 2012。我做同样的事情,但调试不起作用。该过程开始并且已正确连接,但“模块”窗口完全为空。未加载任何符号。我无法调试任何东西。

我必须做些什么才能让它在 VS 2012 中工作?

【问题讨论】:

  • 您已启用非托管代码调试?
  • @jdv-JandeVaan “启用非托管代码调试”未标记。我认为它可以让我调试 Delphi 代码本身。我要启用它,看看会发生什么
  • @jdv-JandeVaan 现在“模块”窗口充满了很多模块。但是我要调试的特定 .NET 模块显示“符号文件中没有本机符号”,并且我的断点被标记为“未加载任何符号”
  • 嗯。老实说,我最初误解了这个问题......但无论如何......你的程序集是什么.net版本?
  • @jdv-JandeVaan 3.5.. 全部

标签: .net debugging visual-studio-2012


【解决方案1】:

我的情况和你的完全一样(希望还不算太晚)。

问题在于,在“附加进程”中,当您启动外部程序时,您可以选择 .NET 版本的调试器(在我们的示例中为 Managed 3-3.5),但出于某种原因,默认调试器为 4。 怎么做:文件>添加>现有项目,然后添加非托管程序的基本EXE文件。它将显示为单个文件项目。右键单击它并“设置为启动项目”。再次右键单击和属性。设置调试器类型:托管(v3.5、v3.0、v2.0)。

就是这样,调试器现在将加载正确的版本。我很肯定这会很好。

【讨论】:

  • 我永远不会考虑在我的解决方案中添加本机可执行文件作为项目。谢谢!
  • 这太棒了!非常感谢你!它对我有用。我想知道,您是如何解决这个问题的。
  • 我记得非常幸运,并且坚持不懈:)
【解决方案2】:

我看到了完全相同的问题。使用 .NET 3.5 管理单元运行 MMC.exe。在升级到 VS2012 之前调试得很好,现在升级后它说没有加载本机符号并且断点不起作用。 @jdv-JandeVaan 提示是我前进所需要的。我需要将调试器设置为使用 .NET 3.5。我能找到的唯一方法是在 Attach to Process... 对话框中选择 .NET 3.5。不方便,但可以。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-15
    相关资源
    最近更新 更多