Windows 7上的.NET源代码调试

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

  • Symbol Server = 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,但它声称在该位置没有源代码。


    我的猜测是你的DLL文件是发布版本,所以JIT编译器正在优化一些函数调用(它通常会内联小函数)。 这意味着,当运行时试图将jitted代码翻译回PDB时,它会变得困惑。

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

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

    这将停止JIT编译器优化掉通话,并让您的PDB文件在您的代码中引用正确的通话。 您需要重新启动应用程序,并且因为它没有进行优化运行,所以它会降低到DEBUG编译级别,但您应该能够正确连接调试程序。


    在项目构建属性中,可以选择运行哪种体系结构 - x86或x64。 出于调试目的,您可能会尝试切换到x86; 它可能允许您调试并发现您的问题。

    链接地址: http://www.djcxy.com/p/74541.html

    上一篇: .NET source debugging on Windows 7

    下一篇: Visual Studio 2010 Professional: How to access Modules window?