繁体   English   中英

使用 .NET 库调试 Win32 应用程序,VS2008 工作,2010 不工作,知道我应该从哪里开始寻找吗?

[英]Debugging Win32 app using .NET libraries, VS2008 works, 2010 doesn't, any idea where I should start looking?

我们有一个本地程序,编写于 Delphi 2007,一个 Win32.EXE 文件。

该程序托管 .NET 运行时,并加载我们编写的一堆程序集。

因此,如果我将该可执行文件复制到 bin\Debug 目录中,将 .NET 项目配置为启动可执行文件,我可以在 2008 年对其进行调试。基本上,.NET 程序集中的断点将显示为空心圆,直到程序加载的点启动 .NET 运行时并加载我的程序集,此时它们成为功能断点,它们会在正确的点中断,等等。

基本上,如果我为此使用 Visual Studio 2008,调试就成功了。

现在我尝试使用 Visual Studio 2010 升级项目,但没有成功。 断点仍然显示为空心圆圈,但现在显示了一个额外的黄色警告标志,告诉我没有加载任何符号。

然而,对代码的更改实际执行。 如果我将消息框添加到特定方法,则该消息将在运行程序时显示,但该行上或附近的断点不会停止调试器。

我浏览了调试选项对话框,发现 2008 年和 2010 年之间没有区别。2010 年的对话框中有几个新的复选框,所以我尝试了这些的所有组合,没有骰子,仍然没有功能断点。

有没有其他人做过这样的事情并且知道我必须调整什么?

根据您使用的运行时,VS2010 可能会在不同的进程中启动 exe 和 .net 部分。 由于工作室附加到 exe 进程,如果 .net 组件确实在单独的进程中运行,那么您看到的内容将适用。 尝试手动附加到 .net 进程,看看是否有帮助。

这是一个类似的问题,但 nUnit 是 exe 而不是你的 dephi 应用程序。 我怀疑你的问题有点相关。

更新:看看这个解决方案 您可能需要添加一个配置来告诉工作室使用非 4.0 运行时,如下所示:

<?xml version="1.0"?>
<configuration>
  <startup>
    <supportedRuntime version="v2.0.50727"/>
  </startup>
</configuration>

Here is a post describing the problem ,以及 MSDN 博客上的更官方的帖子

检查这些设置:替代文字

解决方法:尝试手动附加到应用程序并指定调试托管代码:

第1步

调试窗口

第2步

调试选项

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM