[Visual Studio] 偵錯模式無法叫用中斷點

偵錯是Developer的左右手,上一次碰到問題是Visual Studio 2013時代,時光飛逝,

這一次不再挑戰自己的記憶體容量,筆記!

開發工具訊息: 請在偵錯效能下降的作業(例如無法叫用中斷點)中,使用Just My Code與應用程式編輯器最佳化的結果的發行組建。

今天想 Debug 有陣子沒開啟的專案時出現以下訊息:

1.透過MSDN了解什麼是Just My Code

       1.從已開啟的專案建立的組件(dll),都視為使用者程式碼(user code),也就是my code。

       2.當組件被最佳化找不到pdb檔案時,視為非使用者程式碼(Non user code)。

      離題一下:

      *有pdb就可以偵錯其他專案!

      *DotNet framework library設定來源伺服器也是可以偵錯(http://referencesource.microsoft.com/symbols)

 

2.小結:當啟用只偵錯Just My code選項時:
  • 使用者程式碼可以F11逐行偵錯(step into)
  • 非使用者程式碼沒辦法F11逐行偵錯(step into)只能F10(step over)

 

3.測試後,找到解決辦法有2種:

A.停用只偵錯Just My Code的選項:

(表示使用者程式碼與非使用者程式碼都偵錯,即使專案組件因為最佳化而被視為非使用者程式碼也可以偵錯)

可以偵錯了!!

B.取消偵錯專案的最佳化程式碼:(讓專案組件維持使用者程式碼的分類)

 如果希望維持Just My code(使用者程式碼)的勾選,可以到專案檔右鍵 > 屬性 > 建置 > 取消最佳化程式碼的選項。

如果還是沒辦法偵錯,可以在同一個專案建置視窗中,選右下角進階

檢查一下偵錯資訊要設定為full pdb only

呼~吃完晚餐繼續寫code,越忙得時候越胖,這禮拜要跑蘆竹濱海馬來減肉。

 

參考

Just My Code

DebuggerNonUserCodeAttribute