joe*_*not 10 debugging step-into debug-symbols visual-studio-2008
使用Visual Studio 2008 SP1和VB.NET项目; 我有一些代码,我无法介入.立即窗口显示消息"跨越没有符号的方法'Some.Namespace.Here'"
我怎样才能确保方法总是有符号?!我需要进入每一行代码.我正在按F8(这是VS2008中的"Step Into",从内存中我认为它曾经是VS2005中的F11).
这个调试器的东西总是让我感到困惑:在解决方案级属性页面,我看到一个配置下拉列表,其中包含4个值:Active(调试),Debug,Release,All Configurations. - 当前设置为"活动(调试)"在项目级别,我看到一个配置下拉列表,其中包含2个值:Debug,Release. - 目前设置为"调试"
McM*_*ons 22
我知道这是一个老问题,但你是否可以在返回IEnumerable的方法中使用yield函数?
例如(人为):
public IEnumerable<object> GetObjects(IEnumerable<object> objects)
{
foreach(var obj in objects)
yield return obj;
}
Run Code Online (Sandbox Code Playgroud)
我经常在我的单元测试中遇到这种情况,但由于懒惰的评估,yield语句在有必要之前不会处理.强制枚举的一种方法是将.ToList()附加到调用语句,例如,虽然您不希望永久地执行此操作,除非该调用可能是对枚举本身并不重要的某些功能的测试.
因此,执行以下操作应导致枚举:
GetObjects(new List<object>()).ToList();
Run Code Online (Sandbox Code Playgroud)
简而言之,如果您正在调用需要枚举的方法,但从不枚举结果,那么您将在输出中得到该错误.这也可能发生在LINQ语句中,例如.Select.
编辑:没有注意到它是一个VB.NET项目,但我很确定原理仍然存在.
如果有问题的命名空间是未附带符号(pdb 文件)的第三方 dll,则会发生这种情况。为了“步入”,需要符号文件。
如果它是您自己的代码,那么您只需要仔细检查您的符号文件是否存在。将其设置为在项目级别进行调试应该可以做到这一点。