C# 调试ASP.Net应用程序-跳过未命中的行和断点
调试ASP.Net应用程序时,我遇到了一个非常奇怪的问题。这似乎发生在某个类中的所有函数上。我怀疑有几个问题都是相关的:C# 调试ASP.Net应用程序-跳过未命中的行和断点,c#,asp.net,debugging,visual-studio-2012,C#,Asp.net,Debugging,Visual Studio 2012,调试ASP.Net应用程序时,我遇到了一个非常奇怪的问题。这似乎发生在某个类中的所有函数上。我怀疑有几个问题都是相关的: 函数中的断点会被忽略,但是如果我在调用该函数之前放置一个断点,然后f11介入,我可以正常调试该函数 如果我附加调试器,然后添加一个断点,只要代码没有执行,它就会添加它(尽管如上所述它会被忽略)。调用函数后,如果我尝试添加断点,visual studio会给出一个错误“无法设置以下断点…公共语言运行库无法设置断点。” >P>调试时,部分行似乎完全跳过。例如,考虑以下函数:
- 函数中的断点会被忽略,但是如果我在调用该函数之前放置一个断点,然后f11介入,我可以正常调试该函数
- 如果我附加调试器,然后添加一个断点,只要代码没有执行,它就会添加它(尽管如上所述它会被忽略)。调用函数后,如果我尝试添加断点,visual studio会给出一个错误“无法设置以下断点…公共语言运行库无法设置断点。”
public GetCareersParametersByCriteriaResponse GetCareersParametersByCriteria(GetCareersParametersByCriteriaRequest request)
{
var response = new GetCareersParametersByCriteriaResponse {
CareersParameters = new List<CareerParametersView>()
};
var predicate = PredicateBuilder.True<CareerView>();
if (!request.IncludeExcludeTop20Careers) {
predicate = predicate.And(c => !c.ExcludeTop20);
}
predicate = predicate.And(c =>
c.EducationMinimumLevel <= request.MinimumEducationLevel &&
c.EducationMaximumLevel >= request.MaximumEducationLevel);
var careerIds = _careerLibrary.Careers.AsQueryable().Where(predicate).Select(c => c.CareerId).Distinct();
foreach (var careerId in careerIds) {
response.CareersParameters.Add(_careerLibrary.CareerParametersLookup[careerId]);
}
response.IsSuccess = true;
return response;
}
公共GetCareerParametersByCriteriaResponse GetCareerParametersByCriteria(GetCareerParametersByCriteriaRequest请求)
{
var response=新GetCareerParametersByCriteriaResponse{
CareerParameters=新列表()
};
var predicate=PredicateBuilder.True();
如果(!request.IncludeExcludeTop20Careers){
谓词=谓词和(c=>!c.ExcludeTop20);
}
谓词=谓词。和(c=>
c、 EducationMinimumLevel=request.MaximumEducationLevel);
var careerIds=\u careerLibrary.Careers.AsQueryable().Where(谓词).Select(c=>c.CareerId.Distinct();
foreach(careerIds中的var careerId){
response.careerParameters.Add(_careerLibrary.CareerParametersLookup[careerId]);
}
response.issucess=true;
返回响应;
}
- 清洗液
- 重建方案
- 手动删除bin文件夹中的所有DLL和pdb文件
- 重新启动visual studio
- 重新启动
- 确保禁用“优化代码”
- 确保多个线程不会同时调用函数
- 修改代码文件并确保它拾取更改以确保它运行的是最新版本。它是。(还打开了调试>窗口>模块并检查了pdb上的时间戳-它是最新的)
- 正在删除位于C:\Windows\Microsoft.NET\Framework64\v4.0.30319\临时ASP.NET文件的DLL的IIS副本
- 清除符号缓存
- 完全重新安装VS2012和所有插件(如resharper)
更新5:尝试从头开始重新安装VS2012-仍然没有乐趣尝试打开
模块窗口(调试->窗口->模块)
并查看模块列表。您应该会看到与您的项目相关的DLL文件。现在,重要的是符号状态
列是否显示加载的符号。如果没有,请查看路径
列,检查其是否正确。最后,请重新格式化并重新安装是解决问题的唯一方法我已检查模块窗口-显示已加载所有相关符号,时间戳与上次构建时间正确对应