在偵錯工具中移動執行指標以變更執行流程

偵錯時,您可以手動移動執行指標,以變更下一個將執行的陳述式。 移動指標適用於略過包含已知 Bug 的程式碼等情況,而且是偵錯工具更進階的功能。

變更執行流程

暫停偵錯工具時,原始程式碼邊界或 [反組譯碼] 視窗的黃色箭號會標示下一個執行陳述式的位置。 您可以透過移動這個箭號來變更將執行的下一個陳述式。 您可以略過程式碼或返回上一行。

Animation that shows how to move the pointer.

Animation that shows how to move the pointer.

如果您想要變更將執行的下一個陳述式,偵錯工具必須處於中斷模式。 在原始程式碼或 [反組譯碼] 視窗中,將黃色箭號拖曳至不同的行,或以滑鼠右鍵按一下您要下一步執行的行,然後選取 [設定下一個陳述式]

程式計數器會直接跳至新位置。 不會執行舊執行點與新執行點之間的指令。 但是,如果將執行點向後移,並不會復原中間的指令。

警告

  • 將下一個陳述式移至另一個函式或範圍通常會導致呼叫堆疊損毀,這會導致執行時間錯誤或例外狀況。 如果您嘗試將下一個陳述式移至另一個範圍,偵錯工具會提供警告,並有機會取消作業。
  • 在 Visual Basic,您無法將下一個陳述式移至其他範圍或函式。
  • 在原生 C++ 中,如果啟用執行階段檢查,設定下一個陳述式會導致在執行到方法結尾時發生例外狀況。
  • 啟用 [編輯後繼續] 時,如果您進行了 [編輯後繼續] 無法立即重新對應的編輯作業,[設定下一個陳述式] 就會失敗。 例如,如果您已在 catch 區塊中編輯程式碼,就可能發生這種情況。 發生這種情況時,錯誤訊息會告訴您不支援作業。
  • 在受控程式碼中,如果下列狀況無法移動下一個陳述式:
    • 下一個陳述式是在與目前陳述式不同的方法中
    • 偵錯已由 Just-In-Time 偵錯啟動。
    • 呼叫堆疊回溯進行中。
    • 擲回 System.StackOverflowException 或 System.Threading.ThreadAbortException 例外狀況