2014-04-14 68 views

回答

17

調試器開發團隊對這個問題有一個例子很好的博客文章以及:http://blogs.msdn.com/b/visualstudioalm/archive/2013/10/10/tracepoints.aspx

跟蹤點是不是在所有的新功能(他們一直在Visual Studio 2005年以來VS)。而且它們本身不是斷點,因爲它們不會導致程序執行中斷。當您需要檢查某些內容時,這可能很有用,但不會停止該程序,因爲這會導致錯誤的行爲不會重新生成等。

跟蹤點是嘗試克服無法停止程序的情況通過允許斷點將信息記錄到調試輸出窗口並繼續執行,而不會在用戶界面上暫停,檢查某些行爲會導致某些行爲無法再現。你也可以用宏來做到這一點,但它可能會耗費更多的時間。

要設置一個跟蹤點,首先在代碼中設置一個斷點。然後使用斷點上的上下文菜單並選擇「When Hit ...」菜單項。您現在可以爲斷點添加日誌語句並關閉默認的停止操作,以便您登錄並繼續。還有一些可以添加到日誌字符串的其他信息,包括有關bp位置的靜態信息,例如文件,行,函數和地址。您還可以添加動態信息,如表達式,調用函數或調用堆棧。諸如添加線程信息和進程信息之類的東西可以幫助您在處理多線程和/或進程時跟蹤時序錯誤。

5

根據MSDN:

跟蹤點是在Visual Studio中新的調試功能。跟蹤點是一個與其關聯的自定義操作的斷點。當一個跟蹤點被命中時,調試器執行指定的跟蹤點操作,而不是或除了破壞程序執行外。

+0

不知道它的新功能是否會在VS 2008中引入 – Habib

2

使用情況下它可以證明非常有用:

有可能當你想調試它被調用的次數(比如數百)衆多數量的功能,你可能只是想的情況下,看到趨勢其中一個局部變量正在改變。通過放置斷點來做到這一點是可能的,但考慮停止(在調試時)該函數數百次,並記下記事本中的值。使用tracepoint這麼做很容易,它直接將日誌放在「Output」窗口中,可以輕鬆分析甚至清除。 節省數小時的人力和耐心。

例數在輸出窗口(可以運行數百行):

keyframeNo = 2, time = 1100 
keyframeNo = 1, time = 0 
keyframeNo = 1, time = 1 
keyframeNo = 1, time = 1 
keyframeNo = 1, curTime =22 
curTime=1132835, keyframeno=15 
keyframeNo = 2, time = 1 
keyframeNo = 2, time = 1 

如何使用它:

在代碼>斷點右擊鼠標>插入跟蹤點

使用TracePoint的優點:

  • 無需添加代碼生成日誌。所以,沒有緊張打造的代碼,也沒有清理代碼的開銷。
  • 不會妨礙執行中的代碼流,不像斷點。
  • 它也可以打印局部變量的值。輸入{local_variable}點擊「」後點擊「
  • 您也可以在調試狀態中插入跟蹤點,就像您可以對斷點進行操作一樣。