【问题标题】:Restrict Visual Studio 2010 from debugging third-party DLL files限制 Visual Studio 2010 调试第三方 DLL 文件
【发布时间】:2011-08-13 04:30:29
【问题描述】:

几天前,我为Ninject DLL 启用了第三方调试来测试一些东西。现在我无法从 Ninject 源文件中分离调试器,因此代码正在步进(如果找不到源文件,则尝试步进)进入 Ninject 源。 Telerik 源代码也发生了同样的问题。我已在调试选项中选中“仅启用我的代码(仅限托管)”,但 Visual Studio 仍会进入第三方代码。如何只调试我的代码并避免进入第三方 DLL 文件?

【问题讨论】:

    标签: visual-studio-2010 visual-studio-debugging


    【解决方案1】:

    不幸的是,JeffN825 的回答对我也不起作用。

    这样做了:

    为您的可执行项目创建一个后期构建步骤:

    在 Build Events > Post-build event 命令行下,添加以下脚本(替换为您的路径)以删除创建后的 pdb 文件:

    ECHO Y | DEL  $(SolutionDir)<MyProject>\bin\Ninject.pdb
    ECHO Y | DEL  $(SolutionDir)<MyProject>\bin\Ninject.Web.Mvc.pdb
    

    现在当我运行我的项目时,Ninject 代码并没有进入。

    【讨论】:

    • +1。我不认为 N​​inject 一开始就应该以这种方式发布 pdb 文件,我已经为此打开了一个问题 here。
    【解决方案2】:

    您需要清理 Visual Studio 的符号缓存 - 请参阅堆栈溢出问题 How do you clear your Visual Studio cache on Windows Vista?。

    还要检查工具 -> 选项 -> 调试 -> 符号。

    并删除和获取您不想调试的位置。并删除“缓存此目录中的符号”文本框值中的文件,然后单击“空符号缓存”(我说要这样做,因为有时我觉得它有点古怪)。

    然后重新启动 Visual Studio,并确保当您再次开始调试时,您的 Ninject/Telerik DLL 文件旁边没有 .pdb 文件。

    【讨论】:

    • 杰夫,我按照给定的链接清除了缓存和符号缓存,但不知何故我无法让 VS 进入 Ninject 代码。然而我注意到一件奇怪的事情。当我“取消选中”调试选项的“仅启用我的代码”复选框时,VS 不会进入 Ninject 代码。 Visual Studio 的“仅启用我的代码”选项以相反的方式工作,这非常奇怪。或者我可能无法在基本层面上理解它。
    • 杰夫,我无法摆脱 Ninject/Telerik pdb。如果我手动删除它们,它们会在我下次构建解决方案时创建。
    • 您是在自己构建 Ninject/Telerik 源吗?
    • 杰夫,恐怕不行。对于 Telerik,我只需使用“添加引用”导入 dll。对于 Ninject,我使用“添加库引用”从 Nuget 安装 Ninject.MVC3。就源代码而言,几天前我想调试它时,我已经建立了 Ninject 的源代码用于调试目的(生成 pdb)。我认为这似乎是问题所在,但我不确定如何处理。
    猜你喜欢
    • 1970-01-01
    • 2021-06-27
    • 2011-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多