簡體   English   中英

Vs2017 / C# 奇怪的調試器行為

[英]Vs2017 / C# weird debugger behavior

我在 C# 項目(目標 .Net Framework 4.7.2)的調試版本中被奇怪的行為所困擾。

  1. 以下代碼返回false。
var wHasOvernightShifts = this.ScheduleSegments.Any(
    x => x.SegmentTypeId == eSegmentType.Schedule 
         && !x.IsDeleted 
         && x.ShiftDate == pShiftDate 
         && x.StartTime.Value.DayOfWeek != x.FinishTime.Value.DayOfWeek);

我知道這是錯誤的答案。 當我在 Quick Watch 中評估 RHS(在相同點使用相同數據)時,相同的代碼返回 true。 退回調試器並重新執行該語句再次返回false。 (nb 所有引用的屬性都沒有副作用)。

  1. 我還有一個方法似乎可以執行但返回空值。 方法內的斷點永遠不會被觸發。 嘗試進入該函數的嘗試將被忽略。 斷點表示它不會被觸發,因為模塊尚未加載。 但是,源代碼中更高的幾行來自同一模塊的函數表現正常(wrt 調試和預期功能)。

如果我執行清理和重建,那么一切都會按預期進行。 請注意,僅重建是不夠的。

在情況 2 中,在清理/重建之后,該方法返回一個非空集合並且其中的斷點起作用,就像 step-into 一樣。

貌似編譯器的增量部分壞了,或者執行環境剛剛忘記加載了模塊。

有沒有其他人遇到過類似的問題? 有沒有簡單的解決方案(除了清理/重建)?

nb 我已關閉“僅啟用我的代碼”並打開“要求源文件與原始版本完全匹配”以嘗試解決此問題 - 沒有運氣。

自從我更新項目以確保每個配置都構建到一個單獨的目錄中以來,已經有幾個星期了。 問題似乎已經消失了。

我很確定這是解決問題的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM