2011-03-24 140 views
5

您知道如何單擊斷點上的黃色箭頭並將其向下拖動以跳過執行代碼行嗎?那麼,是否可以創建一個「When Hit」宏(或類似的東西)來跳過包含斷點的行的執行?調試 - 用斷點跳過代碼

因此,而不是寫代碼就像

if(!Debugging) 
    Response.Redirect("LoginFail.aspx"); 

我可以坐在Response.Redirect()線斷點和「當打」會跳過它。

+0

可能的重複[可以在VisualStudio中有跳過行的命中點嗎?](http://stackoverflow.com/questions/455290/can-i-have-a-hit-point-in-visualstudio-那個跳過線) – heavyd 2011-03-24 19:45:44

回答

6

我不知道這樣做的烘烤方式。但是,您可以設置斷點的「何時命中」選項來運行宏。編寫一個獲取當前行的宏並設置下一個調試器行應該不難。你可能會想看看Debugger.SetNextStatement方法。

像這樣的宏應該這樣做:

Public Sub SkipNextLine() 
    ActiveDocument().Selection.LineDown() 
    DTE.ExecuteCommand("Debug.SetNextStatement") 
End Sub 
+1

這太棒了!不幸的是,從Visual Studio 2012中刪除了宏。 – 2014-10-22 10:08:31

0

有沒有辦法,我知道有一個斷點要做到這一點,但你可以使用編譯器指令來跳過代碼

#if (DEBUG) 
//this code is skipped in debug mode 
#endif 
0

嘗試:

#if DEBUG 
Response.Redirect("LoginFail.aspx"); 
#endif 

確保您有DEBUG常數檢查你的構建屬性。

0

是的,你可以做到這一點,直接使用跟蹤點。

  1. 在函數底部找到返回語句或最終關閉大括號的地址,方法是打開一次,然後在寄存器窗口中查看EIP寄存器,或者添加Watch的「@eip 」。
  2. 將追蹤點添加到要跳轉的線上。請記住,跳轉將發生在執行任何行之前。跟蹤點的含量應{@eip = address}使用該地址從步驟1

https://stackoverflow.com/a/14695736/301729

0

查看與使用編譯器指令或任何其它需要在代碼中添加邏輯的同意。但是,也理解編輯調試代碼並不總是一種選擇(例如,不擁有代碼可能意味着沒有構建它所需的全部資源)。

如果這是你的情況,恐怕寫你自己的宏或等待VS有一個內置的等價物是你唯一的選擇。