Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 2008 没有符号的跨步方法-如何跨步?_Visual Studio 2008_Debugging_Debug Symbols_Step Into - Fatal编程技术网

Visual studio 2008 没有符号的跨步方法-如何跨步?

Visual studio 2008 没有符号的跨步方法-如何跨步?,visual-studio-2008,debugging,debug-symbols,step-into,Visual Studio 2008,Debugging,Debug Symbols,Step Into,使用VisualStudio2008SP1和VB.NET项目;我有一些代码,我无法进入。即时窗口显示消息 “跳过不带符号'Some.Namespace.Here'的方法” 我如何确保该方法始终具有符号?!我需要深入了解每一行代码。我按F8键(这是VS2008中的“步进”,我想它在VS2005中是F11) 这些调试器的东西总是让我困惑: 在解决方案级属性页上,我看到一个配置下拉列表,其中有4个值:Active(Debug)、Debug、Release、All Configurations当前设置为

使用VisualStudio2008SP1和VB.NET项目;我有一些代码,我无法进入。即时窗口显示消息 “跳过不带符号'Some.Namespace.Here'的方法”

我如何确保该方法始终具有符号?!我需要深入了解每一行代码。我按F8键(这是VS2008中的“步进”,我想它在VS2005中是F11)

这些调试器的东西总是让我困惑: 在解决方案级属性页上,我看到一个配置下拉列表,其中有4个值:Active(Debug)、Debug、Release、All Configurations当前设置为“活动(调试)” 在项目级别,我看到一个配置下拉列表,其中有两个值:
调试,发布当前设置为“Debug”

如果所讨论的名称空间是没有符号(pdb文件)的第三方dll,则会发生这种情况。为了“进入”,需要符号文件


如果它是您自己的代码,那么您只需要再次检查您的符号文件是否存在。将它设置为在项目级别调试应该可以做到这一点。

我知道这是一个老问题,但是您是否在返回IEnumerable的方法中使用了yield功能

例如(人为的):

public IEnumerable GetObjects(IEnumerable对象)
{
foreach(对象中的var obj)
收益率目标;
}
我在单元测试中经常遇到这种情况,但由于延迟求值,yield语句在必要时才进行处理。强制枚举的一种方法是将.ToList()附加到调用语句中,例如,除非调用可能是对枚举本身并不重要的某些功能的测试,否则您不希望永久性地这样做

因此,执行以下操作应导致枚举:

GetObjects(new List<object>()).ToList();
GetObjects(newlist()).ToList();
简言之,如果调用一个需要枚举的方法,但从不枚举结果,则会在输出中得到该错误。LINQ语句也可能发生这种情况,如.Select


编辑:我没有注意到这是一个VB.NET项目,但我很确定这个原则仍然有效

我在Visual Studio 2010中遇到了同样的问题。我会尝试跨入.NET Framework源代码,Visual Studio会跨过它,输出窗口会说它无法跨入,因为没有加载符号文件,但当我查看模块窗口时,我会看到相关符号文件实际上已加载

问题是加载了.NET符号文件,但它不是包含源信息的.NET符号文件。位于的Microsoft公共符号服务器包含包含源信息的符号。位于的Microsoft公共符号服务器包含没有源信息的符号

一种解决方案是正确设置您的\u NT\u SYMBOL\u路径,以便它可以从中获取.NET Framework符号(如果存在),也可以从中获取。类似这样的方法会奏效:

_NT\u SYMBOL\u PATH=SRV*d:\SymbolsCache*http://referencesource.microsoft.com/symbols;SRV*d:\SymbolsCache*http://msdl.microsoft.com/download/symbols


此_NT_SYMBOL_路径将使调试器首先查找包含源信息的符号,如果没有,则将获取没有源信息的符号。当Visual Studio有一个包含源信息的符号文件时,它可以单步执行该代码。

是的,这是我自己的代码,我已在项目级别(以及解决方案级别,如我最初的问题中所述)将其设置为“活动(调试)”。我可以看到.pdb文件,事实上我手动删除了它们并重新编译,以便重新生成它们。当我按F8键时,我希望frm.Show()和frm.Focus()方法都会进入frm_激活的事件,但这不会发生。在此事件中,我必须手动设置断点。
GetObjects(new List<object>()).ToList();