【问题标题】:Ignore other DLL Files when debugging DLL Project with target application (Visual Studio 2019)使用目标应用程序调试 DLL 项目时忽略其他 DLL 文件 (Visual Studio 2019)
【发布时间】:2020-06-29 19:21:22
【问题描述】:

我在 Visual Studio 中下载了一个 C++ DLL 项目,它是另一个现有程序(媒体播放器)的插件模块。该项目创建的 DLL 保存在插件文件夹中,由媒体播放器加载,运行良好,没有任何问题。但是,我希望能够在播放器运行时单步执行库中的代码以了解代码的工作原理。

问题是,当我设置项目以启动媒体播放器并单步执行 DLL 项目代码时,它开始正常并且我可以设置断点。但在某些时候,Visual Studio 调试器会尝试访问媒体播放器中其他加载的 DLL,而我没有源代码,它会导致整个事情崩溃,并出现“访问冲突写入位置等等等等”错误。除了我拥有源代码的库之外,我没有兴趣尝试访问程序正在加载的任何其他库,那么有什么方法可以防止 Visual Studio 调试器尝试连接到这些其他库?我知道该错误不是由于 DLL 项目本身的任何原因造成的,因为如果我只是告诉它“不调试就开始”,它运行得非常好。

【问题讨论】:

    标签: debugging dll visual-studio-2019 access-violation


    【解决方案1】:

    我有源代码,所以有什么办法可以防止 Visual Studio Debugger 是否试图挂钩这些其他库?

    请尝试以下步骤:

    建议

    1) 在工具-->选项-->调试-->常规下勾选仅启用我的代码

    2)进入Tools-->Options-->Debugging-->Symbols-->选择All modules, unless exclude然后点击Specify exclude模块

    然后输入要排除的 dll 的名称。调试应用程序时不会加载它们的符号。

    3)不要忘记在工具-->选项-->调试-->常规下取消选中Warn if no user code on launch(managed only)选项

    【讨论】:

    • 感谢您的反馈。我已经设置了所有这些选项,并且还包括了我能够从媒体播放器加载符号的几个 dll 的符号服务器。但是当我单步执行代码时,如果我什至尝试跨过一段访问我无法调试的外部 dll 的代码,它仍然会因相同的错误而崩溃。有没有办法完全跳过代码,甚至在问题点之后的代码中附加调试器?
    • 很抱歉提供了错误的指导。首先,您应该在Specify excluded modules(第一个链接)中设置您不想调试的所有排除dll,然后在其中输入额外的dll。另外,如果你想调试一些 dll,你应该在 Symbol 上设置它们的符号文件(.pdb 文件)。如果您不想调试这些 dll,则应从符号中排除它们的 pdb 文件。另外,您是否在排除模块中输入了该 dll?
    猜你喜欢
    • 2011-04-09
    • 1970-01-01
    • 1970-01-01
    • 2021-02-04
    • 1970-01-01
    • 1970-01-01
    • 2021-12-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多