【问题标题】:Remote debugging fails in VS 2010VS 2010 中的远程调试失败
【发布时间】:2011-06-16 21:59:20
【问题描述】:

我有一个项目在我的系统上运行良好。我可以毫无问题地调试项目。我的开发系统是 Win 7 (x64)。当我将此项目部署和/或发布到我的测试环境(Windows Server 2003 (x32))时,我无法再对其进行调试。我不断收到一条错误消息,指出“以下模块是在启用优化或没有调试信息的情况下构建的。”它指的是我的项目中的一个 DLL,它来自解决方案中的另一个项目。

这个应用程序最初是在 VS 2005 中创建的。我将它升级到 VS 2010 没有任何问题。我也觉得原来的项目需要重构,所以我把所有的业务和数据层逻辑都拉了出来,放到了解决方案中一个单独的类库项目中。 Web 项目也需要拆分,因为相同的代码在两个不同的服务器上运行,两个服务器上都有不同的页面。但是,两个 Web 项目之间存在共享表示逻辑,因此我创建了另一个专门用于表示层的类库项目。毕竟,我现在有 4 个项目(2 个类库项目和 2 个 Web 项目)。

所有网页都正常工作,但似乎我在其中一个 Web 项目中的 Web 服务(经典 Web 服务,而不是 WCF)存在一些问题。我得到了错误的结果,我试图通过它来找到问题。请帮忙!我对这个项目有一个未决的截止日期。

【问题讨论】:

  • 了解您使用的语言可能会有所帮助。另外,这有点明显,但是:您已经检查了所讨论的 DLL 是使用调试信息构建的,并且您的部署/发布过程使用了该 DLL 的调试版本?
  • 复制 Debug 版本,而不是 Release 版本。
  • 我正在使用 VB。是的,一切都处于调试模式。事实上,我创建了一个新的解决方案。然后我为所有四个创建了新项目(仍处于调试模式)。我设置了项目,并复制了代码。部署后我收到了同样的错误消息。
  • 我担心的是我引用了安装在我的 GAC 中的 Oracle.DataAccess dll。当我构建我的部署项目时,该 dll 将包含在 bin 文件夹中。该 dll 仅在调试符号消息中提到的类库中引用。我查看了项目,它是为 x86 处理器设置的,而所有其他引用的 dll(即系统、system.data 等)的处理器类型都是 MSIL。

标签: visual-studio-2010 debugging


【解决方案1】:

您在 64 位系统上构建并在 32 位系统上进行部署。这可能是你的问题。

此外,设置远程调试器时使用的帐户需要具有管理员或超级用户权限。

第三,你能远程调试任何其他程序集吗?尝试构建一个虚拟控制台应用程序,看看是否可以远程调试它。

另外,一旦你附加了一个调试器,你可以去 Debug > Windows > Modules > 选择你的模块并尝试手动加载符号。这可能会为您提供有关其未加载原因的更多信息。

【讨论】:

  • 我的远程调试适用于其他应用程序。我已经在我的 Win 7 - 64 位机器上工作了将近一年。多年来,我一直在我的 Win server 2003 - 32 位测试盒上发布和调试应用程序。我从来没有遇到过 64 位和 32 位应用程序的问题。
  • 我会尝试你的调试 -> windows -> 模块并回复你。
  • 好的,当我使用模块页面告诉符号在哪里时,我能够连接。我必须将它们指向测试服务器上的部署路径。我注意到,当我进行部署时,Oracle.Access.dll 会被分离出来,但当我在本地进行部署时不会。这可能是导致调试问题的原因,但我仍然不知道是什么原因造成的。
  • 也许 Oracle 程序集是 GACed?我想如果你谷歌你可以找到调试器如何尝试解析 pdb 文件(如果我没记错的话,它遵循与 dll 解析相同的模式)。也许这将阐明它发生的原因。我很高兴手动方法对您有用!
【解决方案2】:

听起来您在远程调试方面很有经验,但我在去年发布了三个简短的博客来介绍我的经验,这可能会对您有所帮助。我在 64 位 Win7 系统上构建并部署到 32 位 XP。首先,我必须将我的操作系统从 Win 7 Home Ultimate 升级到 Pro。其次,其中一篇文章谈到了我在远程调试 DEBUG 构建时遇到的问题!我必须使用 Release 构建并设置一些标志(博客条目中的详细图片和信息)。

Remote Debugging a Release Build

General Remote Debugging advice (and screencast) from VS2008

Choosing the Right Version of Win 7 for remote debugging.

【讨论】:

  • 我运行的是 Win 7 Ultimate,所以我的操作系统应该没问题。
  • 好的,您的建议都没有帮助。感谢您至少尝试。
  • 在 MS 世界中,你可以做的事情总是能让我感到开心!我猜在任何其他世界中,“无论什么都有效”这句话再正确不过了!你的博文很有启发性。所以你选择发布模式,然后说输出完整的调试信息。想知道该程序集与 ildasm 中的调试版本有何不同。也许我会在某个时候尝试一下,看看会发生什么。谢谢!
  • @Mrchief 我对此的记忆已经变得模糊,但我想我最终将问题追溯到“定义调试常量”的复选标记。我从未证明过这一点,但我想我可能可以取消选中它并使用调试版本。那个项目很快就会恢复活力,所以我可能会有机会重新审视这个(哦,天哪)。
  • @Mrchief 我刚刚发现了dependency walker 并发现了为什么我无法在远程计算机上调试DEBUG 构建。我posted a question 看看有没有办法解决这个问题。该问题详细说明了为什么 DEBUG 构建对我不起作用。
【解决方案3】:

你试过了吗?

转到项目 -> 属性 -> 构建选项卡

现在确保未选中“优化代码”。 现在转到同一选项卡中的高级 -> 在调试信息下拉菜单中检查完整。

【讨论】:

  • 感谢您的意见。优化代码未检查,调试信息设置为完整。
猜你喜欢
  • 1970-01-01
  • 2011-08-22
  • 1970-01-01
  • 2011-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-09
  • 2013-04-26
相关资源
最近更新 更多