【问题标题】:Cannot see local class variables while debugging DLL in Visual Studio..?在 Visual Studio 中调试 DLL 时看不到本地类变量..?
【发布时间】:2019-10-15 07:56:49
【问题描述】:

我正在尝试调试我在 VB.Net 中编写的 DLL。当外部程序启动时,它会加载 DLL 并且一切都运行良好......但我在 Locals 窗格中看不到类变量。它们显示为空白,如下所示。

此外,某些代码行会生成错误“当前位置没有可用的源代码”,但我想我明白为什么。每当它试图进入任何 Microsoft DLL 的类成员时,它当然没有这些信息。但是任何只处理我编写的代码的行都可以正常工作。

这是 Microsoft Access 2007 的 COM DLL 插件,但我假设无论 DLL 的类型如何,问题大致相同。使用共享 COM 插件向导开始,然后从那里进行自定义,结果令人满意……除了 Locals 窗口中的不可见变量。

我不熟悉编写和调试这样的 DLL;到目前为止,我只完成了 EXE 文件。我研究了 MSDN、Google 和 Stack Overflow,以下是其他线程上询问的详细信息...

  • Visual Studio 2008、.Net 3.0 和 Access 2007
  • 项目属性 > 调试 > 外部程序指向 MSAccess.exe。
  • 为调试设置了项目配置。
  • 优化 = 关闭。
  • 生成调试信息 = 完整。
  • PDB 文件存在于带有 DLL 的 \bin\ 文件夹中。
  • 断点工作正常。
  • Debug.Print 消息正在运行。

我翻遍了注册表,发现了对项目、DLL 及其自定义 UserControl 的所有引用(因为项目创建了一个 CustomTaskPane 并且所有路径路径都指向 \bin\ 文件夹,所以这是必需的。

我做错了什么?

我做对了什么?

我可以改进什么?

【问题讨论】:

    标签: vb.net visual-studio dll com office-addins


    【解决方案1】:

    好的,回答我自己的部分问题。我想我修复了错误消息“当前位置没有可用的源代码”。在项目属性中启用了“启用非托管代码调试”。

    禁用该选项后,我现在可以单步执行代码而不会出错,即使它遇到了我没有代码的对象。调试器的行为也有些不同,但我还没有确定它。我确实阅读了托管代码和非托管代码之间的差异,并以混合组合的方式调试它们,但是虽然我原则上理解,但实际上我还没有理解。

    不过,我的局部变量仍然是空白的。

    【讨论】:

    • 所以这实际上不是一个答案。请避免提出多个问题,因为有人知道所有问题的答案的可能性很低。
    • 是的,这是对错误消息的回答,我现在知道这只是一个问题。但我不知道当我做手术时,我只是描述了一组症状,这些症状似乎与一个可能的单一根本原因有关。如果没有人能够对整个帖子提供完整的答案,我的答案可能是唯一的,即使不完整。
    【解决方案2】:

    好的,在其他项目之间为此工作了几天之后,我有一个答案......各种各样。我认为解决方案和/或项目已经损坏。我会传递我能做的,希望它可以帮助别人。

    昨天我在项目设置和选项>调试中进行了“单击所有内容”的马拉松式会话,但没有任何帮助。在某个时候,我停止摆弄调试设置并继续编写代码,直到我累了回家。

    今天早上我重新尝试了一遍,发现私有类变量现在都可见了。我不知道为什么。此外,还有一个新问题:Just-In-Time 调试器提示不断弹出,甚至认为它没有在设置中启用:

    此外,播放/停止/步进工具栏按钮会在不应该被禁用时被禁用,但相同项目的菜单选择功能正常。

    我再次仔细检查了所有设置。我玩弄了所有东西,但无法让本地类变量再次变得不可见,也无法让 JIT 对话框消失。

    所以我...

    • 制作了解决方案文件夹的副本。
    • 清洗溶液。
    • 重建解决方案,包括安装项目。
    • 已通过解决方案资源管理器从 Windows 卸载安装项目。
    • 再次清洗溶液。
    • 已删除 SUO 文件。
    • 删除了 \bin\ 和 \debug 中的所有内容。
    • 重建解决方案,包括安装项目。
    • 问题仍然存在。

    在 JIT 提示之后,我单击了继续 (F5),然后关闭了 MSAccess。执行停止后,一些 IDE 窗格(例如 Explorer、Locals 等)消失了,有些则飞到屏幕上的随机位置。就在那时,我决定某些东西可能已经损坏,并开始计划从头开始卸载/重新安装所有 Visual Studio 2008,甚至可能从头开始新的解决方案。

    所以在重新安装之前,我尝试从头开始创建一个新的解决方案,发现一切都运行良好,即使所有设置都与原始解决方案一样

    所以在原来的解决方案中我...

    • 已从工具 > 导入和导出设置中导出设置。
    • 重置所有设置。
    • 导入了我刚刚保存的设置。
    • 在导入对话框关闭的那一刻,我收到错误消息:“发生意外错误”。
    • 重新启动 VS IDE 时,我收到一个对话框,提示“Visual Studio 正在为首次使用配置环境”。听起来不太好。
    • 尝试再次导入设置,同样的错误。
    • 重新启动,再次尝试导入,同样的错误。
    • 关闭了解决方案文件,尝试在没有打开任何解决方案的情况下再次导入设置,它可以工作....或者似乎可以。
    • 然后打开解决方案...同样的问题又回来了。
    • 已从新解决方案中导出设置。
    • 已将这些设置导入原始解决方案...并且已修复...?
    • 没有导入错误,项目开始正常运行..!!
    • 本地类变量可见,JIT 提示不见了..!!

    所以...我猜在解决方案、项目之一、IDE 设置或...某些东西中出现了问题。我希望这对其他人有帮助。

    【讨论】:

      猜你喜欢
      • 2016-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-24
      • 2013-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多