2013-12-13 58 views
2

我在調試ASP.Net應用程序時遇到了一個非常奇怪的問題。它似乎發生在某個班級內的所有功能上。還有,我懷疑都是相關的幾個問題:調試ASP.Net應用程序 - 跳過沒有命中的行和斷點

  • 功能裏面斷點被忽略,但如果我之前將斷點調用該函數,然後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; 
    } 
    

看來,跳過分配到「謂語」和值顯示爲空但是行後,增加了教育分鐘/ max仍然執行,但謂詞的值保持爲空,從那裏跳過直接 t他在沒有分配職業標準的情況下進行foreach,看起來沒有在迭代器上調用下一步。結果,careerId沒有被分配一個值(因此有0)並拋出錯誤,因爲0不是有效的ID。

注意:即使0是無效的id並導致'給出的鍵不存在於字典'異常被拋出,函數繼續執行並執行返回。此時,調試器完全消失(不返回到調用函數),並且一切似乎都被鎖定(即,頁面從不加載等),直到我將調試器分離並且它給出了死亡的黃色屏幕。

事情我已經嘗試:

  • 清洗液
  • 重建解決方案
  • 手動刪除在bin文件夾
  • 所有DLL和PDB文件重新啓動Visual Studio的
  • 重啓
  • 確保「優化代碼」已禁用
  • 確保多個線程不同時調用該函數
  • 修改代碼文件並確保它檢測到更改以確保它正在運行最新版本。它是。 (還打開了Debug> Windows> Modules並檢查了pdb上的時間戳 - 它是最新的)
  • 刪除位於C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Temporary ASP的DLL的IIS副本。 NET文件
  • 清除符號緩存
  • 完全重新安裝VS2012和所有插件(例如ReSharper的)

它似乎開始安裝VS2012更新4後立即發生,但我不能在網上找到關於更新後,任何像這樣的問題,任何事情,並重新安裝VS沒有幫助所以這可能是巧合

更新:在調試時得到一條消息,說明源代碼與C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Temporary ASP.NET Files ...中的dll不同(即代碼的IIS副本)我想我可能會做點什麼。但是,刪除那些後它仍然沒有區別可言,所以補充說,事物的名單我已經試過

更新2:完全重新安裝VS2012,因爲我懷疑的更新可能會出現故障。但是仍然沒有喜悅,同樣奇怪的行爲

更新3:經過進一步調查中,我似乎得到了同一個項目/組件內的所有類一樣奇怪的問題(溶液中的其它項目都很好)這表明項目水平設置某處。開放的:-)

更新所有建議4:試過清除符號高速緩存器在工具>選項>調試>符號

更新5:從頭嘗試重新安裝VS2012 - 仍然沒有喜悅

回答

0

在最後一個完整的重新格式化並重新安裝是解決

0

嘗試打開Modules窗口(Debug->Windows->Modules)並查看模塊列表。您應該看到與您的項目有關的DLL文件。現在,重要的是Symbol Status列是否表示Symbols Loaded。如果沒有,那麼看看Path列,檢查看起來是否正確。

+0

我已經檢查模塊窗口問題的唯一的事情 - 顯示所有相關的符號被加載和時間戳正確對應於最後構建時間 – Anduril

相關問題