2012-11-14 43 views
2

我有一个Delphi应用程序,它加载了一些我想调试的.NET程序集。我不想调试Delphi代码,只是.NET程序集。我无法调试在VS 2012中运行.NET程序集的本地代码

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

现在我迁移到VS 2012.我也这样做,但调试不起作用。该过程开始并且它被正确连接,但模块窗口完全是空的。没有符号加载。我无法调试任何东西。

有什么特别的我必须做,才能使其在VS 2012中工作?

+0

您是否已启用非托管代码调试? – 2012-11-14 20:00:59

+0

@ jdv-JandeVaan“未启用非托管代码调试”未标记。我以为是在那里让我调试Delphi代码本身。我要让它看到会发生什么 –

+0

@ jdv-JandeVaan现在模块窗口中充满了很多模块。但我想调试的特定.NET模块显示“符号文件中没有本地符号”,我的断点标记为“没有符号已加载” –

回答

3

我的确和你的场景一样(希望不会太晚)。

问题在于,在“附加过程”中,当您启动外部程序时,由于某种原因,默认调试器的版本为4. 要做到:File> Add> Existing Project,并添加非托管程序的基本EXE文件。它将显示为单个文件项目。右键单击它并选择“设置为启动项目”。再次右键单击属性。设置调试器类型:托管(v3.5,v3.0,v2.0)。

就是这样,调试器现在会加载正确的版本。我很积极,这将工作得很好。

+1

我永远不会想到在我的解决方案中将本机可执行文件添加为项目。谢谢! –

+1

这太棒了!非常感谢你!它为我工作。我想知道,你是如何设法解决这个问题的。 – Max

+0

运气很好,坚持不懈,据我回忆:) – ChrisK

1

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

相关问题