上次我們提到,沒有源代碼而且沒有調(diào)試符號(hào),我們也可以 Debug。有人可能會(huì)問,我什么時(shí)候需要在這種情況下調(diào)試嗎?!
是的。比方說,我們用了某些第三方的組件,這些組件里面難免也會(huì)有 Bug。就算是微軟發(fā)布的 .net 組件,我們?cè)谀承﹤€(gè)別的例子中發(fā)現(xiàn)了 Bug。就算這些人家的組件都沒有問題,有時(shí)候我們也不得不在程序運(yùn)行到組件中的某些語句時(shí)候查看一些數(shù)據(jù)。
舉個(gè)栗子:我們的程序用了某個(gè)組件A。當(dāng)用戶鼠標(biāo)單擊A的一個(gè)窗口的時(shí)候,A的某個(gè)方法應(yīng)該回掉我們的一個(gè)方法??墒撬谷粵]有(我們?cè)谧约旱姆椒ㄉ霞恿藬帱c(diǎn),沒有被擊中)!如果我們?cè)谶@個(gè)時(shí)候能夠給組件中點(diǎn)擊事件的處理函數(shù)加上斷點(diǎn),我們就可以探一探究竟了。
下面我們就從易到難來看看如何調(diào)試別人家的組件。
我們先來看如何調(diào)試 .NET Framework 的組件。
1. 我們對(duì) VS 的 Options -> Debugging -> General 做一些配置,如下圖:
Screenshot of options window
2. 我們要緩存 .NET 的調(diào)試符號(hào), 到 Options -> Debugging -> Symbols, 設(shè)置 Cache symbols in this directory 到一個(gè)本地的路徑。
配置完成,我們來做個(gè)實(shí)驗(yàn)。我們知道每個(gè) WPF 的窗口的構(gòu)造函數(shù)內(nèi)都會(huì)調(diào)用一個(gè) InitializeComponent() 方法。我們今天想看看這個(gè)方法它到底干了什么。基于以上兩點(diǎn)配置,我們新建一個(gè) WPF 程序,然后給這個(gè)方法設(shè)斷點(diǎn),當(dāng)程序運(yùn)行到該語句時(shí),我們點(diǎn)擊F11,哈,我們就進(jìn)入了微軟的代碼,請(qǐng)看:

網(wǎng)友評(píng)論