2011-04-04 58 views
11

是否可以在Visual Studio 2010中指定一個斷點,該斷點僅在調用堆棧上的調用方法滿足某些特定條件時纔會命中?例如,最有可能的方法名稱。調用堆棧上的條件斷點

我理想的是在Visual Studio本身尋找一個解決方案,比如條件斷點,但我會解決測試方法名稱在代碼中的堆棧並且有一個編碼的斷點。

我想要實現的是切斷來自特定調用者的調用。

回答

16

右擊斷點,選擇「條件」,並使用這樣的事情:

new System.Diagnostics.StackTrace().ToString().Contains("YourMethodName") 
+0

這將字符串整個堆棧跟蹤,使得它很貪婪。是否可以迭代最後5個調用者並測試其名稱,同時仍將代碼插入「條件...」代碼段? – 2011-04-04 15:16:41

+0

由於條件必須是單線,您可以使用'GetFrame(index)'與'||'結合在一起,但它會使效率更低。 – 2011-04-04 15:19:25

+0

另外,您不能在條件中使用lambdas。 – 2011-04-04 15:21:44

4

StackTrace class應該給你你需要什麼。

StackTrace stackTrace = new StackTrace();   
StackFrame[] stackFrames = stackTrace.GetFrames(); 
0

免責聲明 - 我與OzCode

附屬寫作條件斷點是困難的,容易出錯。有一個調試插件使得使用條件斷點調用OzCode

Adding conditional breakpoint

Editing conditional breakpoint

+1

哈!是的,但不幸的是我已經使用OzCode ;-)顯然,在VS 2015中對此的支持也有所改善,儘管我還沒有機會使用它。 – 2015-08-06 20:14:14

+0

你的意思是VS2015還是新的OzCode(v2.0)?自從新版本更好地支持條件斷點以來,我在問。 – 2015-08-11 06:09:26

+1

我得到免費升級到2.0作爲測試版客戶或某事,但由於我一直在做的工作類型,我還沒有在太多的非標準情況下使用它(觸摸木頭)並不是深潛調試。 – 2015-08-11 07:23:26