【问题标题】:.NET source debugging on Windows 7Windows 7 上的 .NET 源代码调试
【发布时间】:2009-09-15 18:31:17
【问题描述】:

我们正在尝试在运行 .NET Framework 3.5, SP1 的 Windows 7 Enterprise RTM(64 位)桌面上调试 SQL Server Compact 问题。应用程序不断崩溃,我们正在尝试为 Visual Studio 2008 SP1 设置 .NET Framework 调试。利用互联网上分散的资源,我们设置了选项:

  • 符号服务器 = http://referencesource.microsoft.com/symbols
  • 菜单工具 -> 选项 -> 调试 -> 只是我的 代码 = 禁用
  • 菜单工具 -> 选项 -> 调试 -> 启用 .NET Framework 调试 = 启用
  • 工具 -> 选项 -> 调试 -> 启用 源服务器支持 = 启用

当我们运行应用程序时,我们无法进入源代码,我们仍然得到错误

此位置没有源代码。

我们确实获得了指示 SQL Server Compact 符号已加载的堆栈跟踪,当我们单击错误对话框上的详细信息时,我们收到一条消息,指示 SQL Server Compact PDB 文件已正确加载。

我确实找到了一篇博文,指出这是符号未更新的问题 对于 Windows 7,Visual Studio 2008 SP1 .NET Framework Source Debugging

但是,我找不到有关此问题的任何官方信息。有什么我想念的吗? Windows 7 符号是否不正确。如果有,什么时候更新?

我的 Windows 7 版本是 64 位。我们还刚刚在 Windows Vista 64 位上测试了相同的场景,并收到了相同的问题和错误。它说它加载了 PDB,但它声称该位置没有源代码。

【问题讨论】:

  • .NET Mass Downloader 在 Windows 7 上也失败了,codeplex.com/NetMassDownloader 所以你的假设被证明是正确的。为什么你需要一个官方的说法? Windows 7 尚未全面上市。
  • 很高兴看到其他证据表明这是真的。然而,Windows 7 Enterprise 对商业用户来说是广泛可用的,我认为许多 .Net 开发人员都是如此。因此,我认为获得官方消息关于源代码调试是否被破坏,如果是,何时修复它的要求并不高。

标签: .net debugging windows-7 sql-server-ce


【解决方案1】:

我的猜测是您的 DLL 文件是发布版本,因此 JIT 编译器正在优化一些函数调用(它通常内联小函数)。这意味着当运行时试图从 jitted 代码转换回 PDB 时,它会感到困惑。

尝试将 .ini 文件添加到您的应用程序根目录;所以如果你的应用是prog.exe,添加prog.ini,内容如下;

[.NET Framework Debugging Control] 
GenerateTrackingInfo=1
AllowOptimize=0

这将阻止 JIT 编译器优化调用,并让您的 PDB 文件引用代码中的正确调用。您需要重新启动应用程序,因为它在没有优化的情况下运行,它会减慢到 DEBUG 构建级别,但您应该能够正确附加调试器。

【讨论】:

  • 谢谢,但它们肯定是调试 dll。
【解决方案2】:

在项目构建属性中,有一个选项可以选择在哪个架构上运行 - x86 或 x64。您可以尝试切换到 x86 进行调试;它可能允许您调试并找到您的问题。

【讨论】:

    猜你喜欢
    • 2010-10-13
    • 2021-04-05
    • 1970-01-01
    • 1970-01-01
    • 2013-02-17
    • 1970-01-01
    • 1970-01-01
    • 2010-09-26
    • 2011-02-25
    相关资源
    最近更新 更多