|
由于上篇文章漏了一些比較重要的知識(shí),在此文中補(bǔ)充。
斷點(diǎn)篇
命中次數(shù)(Hit Counts)
右擊斷點(diǎn),可以設(shè)置Hit Counts(命中次數(shù)),會(huì)彈出如下的對(duì)話框:
當(dāng)條件滿足的時(shí)候斷點(diǎn)會(huì)被命中(即即將被執(zhí)行),這個(gè)命中次數(shù)是斷點(diǎn)被命中的次數(shù)。默認(rèn)是始終break,選項(xiàng)有如下的幾種:始終break;當(dāng)命中次數(shù)達(dá)到多少次時(shí)break;當(dāng)命中次數(shù)是多少的倍數(shù)時(shí)break;當(dāng)命中次數(shù)大于等于多少的時(shí)候break。
于是在上篇中的條件也可以這樣實(shí)現(xiàn),設(shè)置命中次數(shù)等于50的時(shí)候break,按F5后,斷點(diǎn)被觸發(fā),此時(shí)i=50。
斷點(diǎn)過濾器
我們可以限制斷點(diǎn)在特定的處理器和進(jìn)程中??梢栽O(shè)置機(jī)器名、進(jìn)程id、進(jìn)程名、線程id、線程名中的某些條件來過濾一些斷點(diǎn)。
注意:ThreadId需要特別說明一下,ThreadId并不是托管程序中,.NET 框架中System.Threading.Thread.ManagedThreadId,兩者不能等同。簡(jiǎn)單來說,ManagedThreadId是線程在CLR中的標(biāo)識(shí)符,而ThreadId卻是線程在操作系統(tǒng)中的標(biāo)識(shí)符。因此ThreadId需要從調(diào)試器中的“Threads”窗口中獲取。
斷點(diǎn)條件
我們可以設(shè)置斷點(diǎn)達(dá)到的條件,如下圖,我們?cè)O(shè)置表達(dá)式為i==5(注意是判相等,而不是賦值的等于),按F5,斷點(diǎn)再次被觸發(fā),此時(shí)i=50。
還有一個(gè)選項(xiàng)是已經(jīng)被改變,則里面條件是具體的變量,如我們的代碼如下:
private void ConditionDebug()
{
int hitCount = 0;
for (int i = 0; i < 100; i++)
{
if (i==49)
{
hitCount = 1;
}
}
Console.Write("Hit Count={0}", hitCount);
}
NET技術(shù):C#調(diào)試心經(jīng)(續(xù)),轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。