上次我們提到,沒有源代碼而且沒有調(diào)試符號(hào),我們也可以 Debug。有人可能會(huì)問,我什么時(shí)候需要在這種情況下調(diào)試嗎?!
是的。比方說,我們用了某些第三方的組件,這些組件里面難免也會(huì)有 Bug。就算是微軟發(fā)布的 .net 組件,我們在某些個(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è)方法??墒撬谷粵]有(我們在自己的方法上加了斷點(diǎn),沒有被擊中)!如果我們在這個(gè)時(shí)候能夠給組件中點(diǎn)擊事件的處理函數(shù)加上斷點(diǎn),我們就可以探一探究竟了。
下面我們就從易到難來看看如何調(diào)試別人家的組件。
我們先來看如何調(diào)試 .NET Framework 的組件。
1. 我們對(duì) VS 的 Options -> Debugging -> General 做一些配置,如下圖:
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è)方法它到底干了什么?;谝陨蟽牲c(diǎn)配置,我們新建一個(gè) WPF 程序,然后給這個(gè)方法設(shè)斷點(diǎn),當(dāng)程序運(yùn)行到該語句時(shí),我們點(diǎn)擊F11,哈,我們就進(jìn)入了微軟的代碼,請看:
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動(dòng)安全 [無線安全]玩轉(zhuǎn)無線電——不安全的藍(lán)牙鎖 2017-07-26
- 消息隊(duì)列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】 2017-07-26
- 詞向量-LRWE模型-更好地識(shí)別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實(shí)現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動(dòng)安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來看看(二) 2017-07-26