在Visual Studio中调试DLL时看不到本地类变量。.

时间:2019-05-29 16:36:04

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

我正在尝试调试用VB.Net编写的DLL。当外部程序启动时,它将加载DLL,并且一切运行正常...但是我在“本地”窗格中看不到类变量。它们显示为空白,如下所示。

此外,一些代码行会生成错误“当前位置没有可用的源代码”,但是我想我理解原因。每当它尝试进入任何Microsoft DLL的类成员时,它当然都不会包含这些信息。但是任何仅处理我编写的代码的行都可以正常工作。

enter image description here

这是Microsoft Access 2007的COM DLL加载项,但是我认为无论DLL的类型如何,问题都大致相同。使用Shared COM Addin向导开始,然后从那里进行自定义,并获得令人满意的结果……除了“本地”窗口中的不可见变量。

我是新编写和调试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\文件夹。

我在做什么错了?

我在做什么对呢?

我可以改善什么?

2 个答案:

答案 0 :(得分:0)

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

在禁用该选项的情况下,即使它遇到我没有代码的对象,我现在也可以无错误地逐步执行代码。调试器的行为也有所不同,但是我还没有将其固定下来。我确实阅读了托管和非托管代码之间的差异,并以混合组合的方式对其进行了调试,但是虽然我原则上了解,但实际上我还不了解。

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

答案 1 :(得分:0)

好的,在其他项目之间进行了几天的工作后,我得到了一个答案……。我认为解决方案和/或项目已损坏。我会尽我所能,希望对别人有帮助。

昨天,我在项目设置和“选项”>“调试”中进行了一次“单击所有内容”的马拉松会议,但没有帮助。在某个时候,我不再摆弄调试设置,而是继续编写代码,直到我累了回到家。

今天早晨,我有了新的想法,再次尝试,发现私有类变量现在都可见。而且我不知道为什么。此外,还有一个新问题:即时调试器提示不断弹出,甚至认为未在设置中启用它:

enter image description here

此外,当不应该使用“播放/停止/步进”工具栏按钮时,它们也会被禁用,但是相同项目的菜单选择仍可以正常工作。

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

所以我...

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

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

因此,在重新安装之前,我尝试从头开始创建一个新的解决方案,发现即使所有设置都与原始解决方案中的设置一样,所有设置都能正常工作

所以在原始解决方案中,我...

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

所以...我想解决方案中捆绑了一些东西,其中之一是项目,IDE设置等等。我希望这可以帮助其他人。