這是第一部分,Windows平台下的應用程式調試技術講座視頻, 視頻購買地址:
http://product.china-pub.com/3502590
視頻試聽地址: http://v.youku.com/v_show/id_XMzU4OTUzNzAw.html
第1講 準備調試環境
偵錯符號檔案的作用; 建立符號檔案的方法; 在調試器裡有無符號檔案的區別; 公開符號版本和私人符號版本的區別; 建立公開符號檔案的方法; 瞭解符號檔案伺服器的作用; 掌握在Visual Studio以及Windbg裡使用符號檔案的方法; 瞭解無法偵錯工具時的排錯步驟。
第2講 管理符號檔案與原始碼
建立符號檔案伺服器; 調試時整合符號檔案伺服器和原始碼版本控制伺服器,以便調試時,調試機不需要有程式的原始碼,調試器會自動從原始碼伺服器上下載正確的版本。講解了整合SVN和Visual SourceSafe兩種版本伺服器的方法,這樣方便一個大型研發團隊進行每日編譯(daily build)式的開發測試環境。如果跟第26講(驗屍調試)結合來看的話,甚至可以在團隊區域網路內部建立一個自動的BUG收集伺服器,跟符號伺服器、源碼伺服器配合組成一個隨時隨地的BUG跟蹤和分析系統。
第3講 Visual Studio基本調試技術
斷點的實現原理; 條件斷點以及跟蹤斷點; 函數斷點以及異常斷點; 原生程式設定資料斷點; VS提供的各個調試視窗簡介; 調試浮點數計算錯誤的方法。
第4講 Visual Studio調試技術中
在程式啟動和異常終止時附加調試器; 設定遠端偵錯; 使用RPC調試功能同時調試COM程式的用戶端和伺服器端; 在立即視窗裡調試剛剛寫好的函數; SQL調試技術,即在ASP.NET網站或者ADO.NET程式中,單步跟進資料庫預存程序等一系列資料庫調試技巧。
第5講 Visual Studio自動化調試及並行調試
在C++和.NET程式裡添加調試支援,方便調試器在調試的時候收集資訊; 使用Visual Studio的自動化介面編寫自動化調試指令碼; 調試並行代碼,分析效能瓶頸
第6講 Windbg 準系統介紹
作業講解裡有調試WPF程式,分析WPF程式效能瓶頸的方法;
Windbg的基本調試命令講解,設定斷點,載入符號檔案,查看記憶體等基本命令
第7講 調試棧溢出問題(上)
第8講調試棧溢出問題(下)
兩個視頻是連續的。
從彙編的角度以及實際函數調用過程講解了棧的實現,以及調用函數時的建立棧和釋放棧的過程;
記憶體溢出問題的調查步驟; 棧溢出病毒攻擊的原理;
調試棧溢出問題的方法;
C++各種調用規範(Calling Convention)的講解以及相關函數調用示範; 在.NET裡調用使用不同調用規範的函數; 調用規範不匹配導致棧溢出的調查方法; 防範棧溢出的措施。
第9講調試堆溢出問題(上)
第10講調試堆溢出問題(中)
第11講調試堆溢出問題(下)
三個視頻是連續的
CRT調試堆的實現;
使用CRT調試堆檢查堆溢出問題 ;
從系統核心的角度講解Windows記憶體堆的實現,以及示範堆裡面記憶體的分配和釋放過程;
堆溢出的原理講解
調試堆溢出的方法
調試釋放記憶體時使用了錯誤的堆控制代碼這個錯誤的方法
調試使用未初始化記憶體問題的方法
第12講調試資源流失問題(上)
第13講調試資源流失問題(下)
兩個視頻是連續的
調試堆記憶體泄露這個很常見的編程錯誤
調試進程內和進程間控制代碼泄露的方法
在MFC裡檢查記憶體泄露的辦法
調試JavaScript裡記憶體泄露
第14講調試多線程問題(上)
第15講調試多線程問題(下)
兩個視頻是連續的
調試多線程間資料競爭的問題
在多線程裡添加調試支援
調試使用者態線程同步死結問題
調試核心態線程同步死結問題
調試競爭鎖資源問題
調試使用CPU資源過多的問題
多線程編程的注意事項
第16講核心調試與託管程式調試準備工作(上)
調試Windows核心的方法,以及設定原始碼級核心調試的方法
第17講核心調試與託管程式調試準備工作(下)
在windbg裡調試.NET程式的方法及原理
在windbg裡調試.NET虛擬機器CLR的方法,以及設定原始碼調試的步驟
第18講CLR虛擬機器及託管調試命令-應用程式定義域和裝配件
講解應用程式定義域(AppDomain)的知識以及它的使用情境
講解裝配件(Assembly)的知識
講解在調試器裡查看AppDomain和Assembly資訊的方法
講解在Assembly裡混合C#、VB.NET以及Managed C++代碼的方法,以及調試這種模組的方法
第19講CLR虛擬機器及託管調試命令-對象
講解對象(Object)在.NET虛擬機器裡的實現方式
講解在調試器裡查看託管對象、數組記憶體布局的方法
講解查看堆棧的方法
第20講CLR虛擬機器及託管調試命令-類型
講解類型(Type)、泛型(Generics)和函數(Method)在.NET虛擬機器裡的實現方式
講解在調試器裡查看類型和函數記憶體布局以及資訊的方法
講解在windbg裡調試託管程式設定斷點的方法
第21講CLR虛擬機器及託管調試命令-線程
講解線程在.NET虛擬機器裡的實現方式
講解在調試器裡查看線程資訊的方法
講解線程同步在.NET虛擬機器裡的實現方式,以及在調試器裡查看同步資訊的方法
講解線程池的實現方式以及在調試器裡查看相關資訊的方法
第22講CLR虛擬機器及託管調試命令-GC
講解記憶體回收(GC )在.NET虛擬機器裡的實現方式;
查看GC相關資訊的方法
解釋Close和Dispose函數的實現與區別
講解弱引用對象的原理和使用方法
.NET裡的記憶體管理技巧
第23講CLR虛擬機器及託管調試命令-COM互操作與異常
解釋COM對象與.NET互操作的原理
解釋.NET異常的實現原理
從.NET裡使用COM對象的方法
從COM裡使用.NET對象的方法
調試在.NET程式裡使用COM對象出現問題時的方法
第24講託管調試其他工具(上)
講解sosex命令的使用方法
調試.NET程式死結的方法
調試.NET程式記憶體使用量過多的方法,以及調試.NET程式記憶體的其他一些問題。
第25講託管調試其他工具(下)
講解psscor命令的使用方法
調試ASP.NET頁面訪問速度過慢的問題
示範ASP.NET緩衝的使用方法
調試因使用ASP.NET緩衝而導致記憶體不夠的問題的方法
調試調用web服務出現OOM異常的方法
第26講驗屍調試
講解驗屍調試的原理,以及使用Visual studio、Windbg以及Adplus執行驗屍調試的辦法
設定企業內部用的自動收集錯誤報表伺服器的方法。
第27講Windbg調試自動化
使用windbg提供的指令碼語言編寫調試用指令碼程式的方法,實現自動化的程式調試。