拍案惊奇——软件调试实战训练营
隨著軟件復雜度的不斷增加,軟件調試的難度越來越大。以調試器為核心的調試技術是征服軟件世界的一把利劍。要想成為軟件高手,認真修煉軟件調試這門劍法是再多也不為過的。本訓練營通過12個精選案例讓參與者在實戰中“事上磨練”,快速進階。這些案例都來自真實的軟件產品和項目,既有深度,又有廣度,覆蓋Windows和Linux兩大平臺,編程語言方面涉及C/C++和.Net等。涵蓋的技術包括交互式調試(用戶態和內核調試),轉儲文件分析,逆向工程,反調試(加殼)與化解等。訓練營由《軟件調試》和《格蠹匯編》的作者張銀奎(格蠹老雷)親任教練,現身說法。
時間:2017年4月21-23日(周五-周日)(三天兩晚封閉訓練,挑燈論劍)
地點:廬山秀峰景區內松雪樓(住)和中正行營(研習)
形式:實戰演練和討論點評
培訓對象:在Windows或者Linux平臺上從事開發或測試的軟件工程師、項目帶頭人和技術經理
主辦單位:高端調試網站、上海曜印信息科技有限公司
熱身篇:雙劍合璧——WinDBG與GDB之理一分殊(90分鐘)
概要:以Richard Stallman(GDB和GNU事業的開創者)的傳奇故事開場,這一部分將介紹WinDBG和GDB這兩大調試器的核心特征和關鍵用法,比較其異同。讓聽者在傳奇的故事和精彩的演示中快速掌握這兩把利劍的基本招式。
實戰篇:
戰役1:堆損毀導致的隨機崩潰和掛死(90分鐘)
概述:這是一個因為軟件故障而導致外接鼠標鍵盤無法工作的詭異問題,它與移動硬盤配套軟件的后臺服務有關,但也與操作系統系統函數的疏漏密不可分
工具和主要技能:WinDBG,轉儲文件分析,反匯編,從棧上觀察參數,無源代碼調試(跟蹤第三方代碼)
編程語言:C/C++,.Net,匯編
知識點:棧,堆的布局,strcpy的實現,rep movs,x86寄存器的約定用法,溢出,異常,CONTEXT和EXCEPTION_RECORD,DeviceIoControl
討論:寬松接口的副作用
戰役2:后臺服務因段錯誤崩潰(90分鐘)
概述:Linux下重要后臺服務(Daemon)隨機崩潰,深挖到底,竟然與C語言的規范有關,讓你深刻認識C與C++的一個大不同之處,感受著名的頭文件陷阱
工具和主要技能:GDB,GCC,map,dmesg,調試Linux應用程序,反匯編,插入代碼JIT調試
編程語言:C、匯編
知識點:虛擬內存,分頁機制,頁表,缺頁異常,段錯誤,空指針,AT&T匯編和Intel匯編,調用規約
討論:信任程序員,是耶非耶?
戰役3:與驅動程序間通信時的數據混亂(90分鐘)
概述:應用程序與驅動程序通信時,驅動程序總是收到錯誤的數據,打印出來觀察,竟然是日志信息送給了驅動…
工具和主要技能:GDB,printk,dmesg
編程語言:C
知識點:虛擬文件系統,Linux驅動程序,sysfs,與應用程序通信,標準文件
討論:句柄的隱患(多維度審視句柄)
戰役4:應用程序掛死之陷在內核態(90分鐘)
概述:向Powerpoint粘貼文件時,它突然掛死,過錯卻不在它,而是與系統機制(DDE)有關,不負責任的第三方服務軟件也是導致問題的關鍵因素
工具和主要技能:WinDBG,內核調試,在內核調試會話中調試應用程序
編程語言:C++,.Net
知識點:剪貼板,DDE,OLE,系統調用,消息機制,Send與Post的區別,廣播消息,Win32K,服務程序,服務循環
討論:(軟件)協作思想的對與錯
戰役5:.Net程序調試之SDK安裝程序死循環(90分鐘)
概述:Windows7 Platform SDK安裝程序停滯不前,多次重試無果,上調試器發現是因為異常處理不當而陷入死循環
工具和主要技能:WinDBG,使用WinDBG +SOS擴展分析.Net程序的轉儲文件,使用ildasm反匯編.Net程序
編程語言:C#, .Net
知識點:異常,try{}catch,try{}finally,動態語言,Dispose方法,方法表,屬性,托管異常
討論:函數的異常出口
戰役6:多線程調試之同步問題 (90分鐘)
概述:多個線程的首要問題是如何同步?做的不好有可能導致死循環,也有能出現死鎖,本戰役對這兩種情況各舉一例,一個是DUMP,一個是活動目標
工具和主要技能:WinDBG,多線程調試,觀察線程的執行時間
編程語言:C/C++
知識點:線程和進程,管理線程和進程的數據結構,TEB,fs/gs段,volatile關鍵字,死循環,臨界區,!locks, !cs -l,CPU提供的同步設施,LOCK前綴,互鎖系列,intricins,同步方法之比較
討論:無鎖編程
戰役7:轉儲分析之雙誤崩潰(90分鐘)
概述:嚴重的雙誤崩潰大多是因為棧枯竭導致的,棧怎么會用完呢?一位書友最先向我反應了這個問題,后來在顯卡驅動中又多次遇到這個問題
工具和主要技能:WinDBG,系統崩潰轉儲分析
編程語言:C/C++
知識點:異常的分類,中斷處理,IDT表,雙誤,顯卡驅動,DPC,內核態棧,操作系統的任務切換機制;CPU的硬件任務切換;內核態棧溢出;任務狀態段TSS,內核態棧溢出; CR2寄存器;CR3寄存器,GPU,顯卡驅動概要
討論:單一內核和多內核
戰役8:轉儲分析之系統掛死(90分鐘)
概述:系統級掛死(system hang)大多與驅動程序有關,但這個系統級掛死確實不只是軟件的問題
工具和主要技能:WinDBG,轉儲分析,手動觸發系統崩潰,根據反匯編結果產生C/C++代碼
編程語言:C/C++
知識點:DPC,IRQL,硬件資源分配,!arbiter,設備棧,中斷處理,USB的端口狀態寄存器
討論:延遲等待硬件的方法
戰役9:緩沖區溢出之系統服務崩潰(90分鐘)
概述:使用多種方法調試Win7系統中電源管理服務發生崩潰而導致系統反復重啟的問題,使用內核調試解決復雜的用戶態問題,探討軟件的安全問題
工具和主要技能:WinDBG,內核調試,JIT調試,使用內核調試會話調試用戶態問題
編程語言:C/C++
知識點:棧緩沖區溢出;基于Cookie的溢出檢測;服務崩潰;未處理異常,異常的分發過程,JIT調試的原理,會話0,強制登出(logoff),fail fast,GCC的棧溢出保護
討論:安全開發和調試有關安全的問題
戰役10:C++程序中的堆錯亂(60分鐘)
概述:以一個典型的因為字符串類使用不當而導致的堆錯誤為例,深刻理解進程中的多個CRT堆,堆管理器的脆弱之處,字符串類分配內存的方法,靜態鏈接和動態鏈接可能產生的影響,分享使用堆的最佳實踐,思考面向對象設計的基本問題
工具和主要技能:WinDBG,交互式調試,硬件斷點
編程語言:C/C++
知識點:堆,堆管理器,CRT,CRT的多個實例,靜態鏈接CRT和動態鏈接CRT,析構,字符串類,自動內存分配
討論:公開數據成員的得與失
戰役11:混合調試之右鍵菜單異常緩慢(90分鐘)
概述:現場定位Windows資源管理器中右鍵菜單異常緩慢的原因,在調試器中觀察“本地程序中的托管來客”
工具和主要技能:WinDBG,交互式調試,調試性能有關的問題
編程語言:C/C++
知識點:混合代碼情況下的未處理異常;棧溢出;浮點計算單元和浮點寄存器;浮點異常的延遲性;上下文擴展模塊的注冊方法
戰役12:調試加過殼的軟件(90分鐘)
概述:現場調試經過加殼保護的應用軟件,介紹反調試的典型方法和原理,以及化解之道
工具和主要技能:WinDBG,IDA Pro,反匯編,交互式反匯編,Anti-VM和應對
編程語言:匯編語言
知識點:單步標志,硬件斷點寄存器,異常處理器,加殼保護的一般方法,檢查調試器,隱藏調試器,記時法反跟蹤,內存HASH檢測,倒車調用,花指令,虛擬機,檢測在虛擬機中運行的方法,檢測VM之I/O端口,VMWare后門,VPC后門,SIDT方法,STR指令
講師介紹
張銀奎,微軟全球最有價值技術專家(MVP),同濟大學電子與信息工程學院特邀講師,前英特爾亞太研發有限公司軟件架構師。《軟件調試》、《格蠹匯編》的作者,新版《十萬個為什么》電子分冊撰稿人之一,《程序員》雜志調試之劍欄目作者 。1996年畢業于上海交通大學信息與控制工程系,在軟件產業工作20年,在多家跨國公司歷任開發工程師、軟件架構師、開發經理、項目經理等職務,對IA-32 架構、操作系統內核、驅動程序、虛擬化技術、云計算、軟件調優、尤其是軟件調試有較深入研究。從2005年開始公開講授“Windows內核及高級調試”課程,曾在微軟的Webcast和各種技術會議上做過《Windows Vista內核演進》、《調試之劍》(全球軟件戰役研究峰會)、《感受和思考調試器的威力》(CSDN SD2.0大會)、《Windows啟動過程》、《如何診斷和調試藍屏錯誤》、《Windows體系結構——從操作系統的角度》(以上三個講座都是微軟“深入研究Windows內部原理系列”的一部分)等。翻譯(合譯)作品有《現代x86匯編語言編程》、《21世紀機器人》、《觀止——微軟創建NT和未來的奪命狂奔》、《數據挖掘原理》、《機器學習》、《人工智能:復雜問題求解的結構和策略》等。
附錄1:往屆研習班部分照片
附錄2:松雪樓及秀峰景區部分景觀
附錄3:報名與收費
以下所說費用包括:
§? 廬山秀峰景區門票
§? 研習班期間的旅游意外險
§? 包含研習材料的U盤一個
§? 研習班期間(4月21日上午至4月23日下午5點)的住宿、餐飲和茶點
(不包括往返廬山的交通費用和以上費用之外的其它費用)
標準收費:5600元每人
優惠條款:
1)同一單位每5人報名可免一人費用
2)3月31日前報名可以享受8折優惠
3)在校學生或者個人自費參加請聯系課程顧問詢問優惠價格(視報名時間而不同)
報名或垂詢:
1)聯系課程顧問:
a)??????Cindy Long,電話:13621638537,電子郵件:cindy.long@leshanting.cn
b)??????Lisa Zhang ,電話:13801874134,電子郵件:lisa.zhang@leshanting.cn
2)請掃描如下二維碼,關注“格友”公眾號后,發送2017后便可以提交報名信息或者提問。
總結
以上是生活随笔為你收集整理的拍案惊奇——软件调试实战训练营的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机只报数字怎么调成音乐,电脑怎么设置
- 下一篇: 谷歌搜索通告:疫情期间不要关站会影响网站