遠程調試的設計與實(shí)現 遠程調試的設計與實(shí)現

遠程調試的設計與實(shí)現

  • 期刊名字:計算機工程與應用
  • 文件大?。?31kb
  • 論文作者:黃瑞芳,朱敏,張衛民
  • 作者單位:國防科技大學(xué)計算機學(xué)院
  • 更新時(shí)間:2020-11-03
  • 下載次數:次
論文簡(jiǎn)介

遠程調試的設計與實(shí)現*黃瑞芳朱敏張衛民國防科技大學(xué)計算機學(xué)院( 長(cháng)沙410073 )E-mail rfhuang@nudt.edu.cn摘要一般情況下調試器與被調試程序(目標程序運行在同一個(gè)計算機系統環(huán)境中但是在實(shí)時(shí)系統、內核調試及一些Client/Server系統等情況下調試器不能運行在目標程序運行的環(huán)境中此時(shí)有效的解決方法就是實(shí)施遠程調試( Remote debugging 》遠程調試系統由本地調試器、遠程調試服務(wù)器以及遠程調試通訊協(xié)議組成。該文詳細討論這三部分的設計與實(shí)現并介紹一- 個(gè)自行設計的基于遠程調試的并行調試器。關(guān)鍵詞遠程調試調試服務(wù)器并行調試Design and Realization of Remote DebuggingHuang Ruifang Zhu Min Zhang Weimin( National University of Defense Technology ,Changsha 410073 )Abstract : Remote debugging system ,which consists of native debugger remote debugging server and the communicationprotocol is a good solution to the problem that debugger can not run on the environment such as kermel debugging re-altime system and some client/server system on which debuggee ( target program )loes. This paper focuses on the designand realization of the remote debuging system and introduces a remote -debugging -based parallel debugger developedby us.Keywords : Remote debugging ,Debug server Parallel debugging.引言節介紹遠程調試的實(shí)現方法第四節討論遠程調試協(xié)議;最后調試器是軟件開(kāi)發(fā)必不可少的工具。通用計算機無(wú)論是描述自行設計的一個(gè)基于遠程調試的大規模并行調試工具。巨型機、大型機、工作站、還是PC機都配置有適合系統特點(diǎn)的調試工具。如CRAY巨型機的Totalview. SGI工作站.上的2遠程調試的Client/Server概念workshop debugger、 IBM SPI 上的xpdbx. PC機Windows上的源級調試器典型的內部功能包括用戶(hù)界面、符號表處理、codeview等。然而在一些特殊環(huán)境下 系統可能不具備支持本目標程序控制。其中用戶(hù)界面部分處理調試器與目標程序的地調試器運行的能力如:輸入/輸出以及調試命令語(yǔ)法分析;符號表處理主要進(jìn)行源級系統不能運行一個(gè)本地調試器。如嵌入式系統、實(shí)時(shí)系和機器級調試功能及數據間的轉換,它包括表達式分析、地址統;映射、命令轉換等;目標程序控制是在操作系統支持下實(shí)施對系統沒(méi)有運行本地調試器的資源。如缺乏調試需要的內.目標程序的執行控制、地址空間訪(fǎng)問(wèn)、狀態(tài)監控。需要實(shí)施遠程存、或不支持多進(jìn)程使得系統不能在運行- -個(gè)本地調試器的同調試的主要原因是目標系統不能完全支持這些功能必須有另時(shí)又運行一個(gè)目標程序;一個(gè)系統即主機系統分擔其中-部分功能。因而設計遠程調系統不能訪(fǎng)問(wèn)目標程序源文件。如缺乏文件系統;試系統的首要問(wèn)題是如何在主機與目標機之間分布這些調試系統的屏幕或鍵盤(pán)不能用于調試。如目標程序占用了屏幕和鍵盤(pán)。Client/Server 結構是-般遠程調試系統采用的模型CNU另- -方面從計算機系統結構的發(fā)展現狀看,Client/Server的GDB、CRAY的Totalview以及DEC的Ladebug的遠程調試結構已越來(lái)越普遍,- 個(gè)應用軟件通常分布在多個(gè)不同的機器系統都是這種模型。上運行,與這種應用相對應的調試也必須向分布式結構發(fā)展。2.1遠程 調試Client/Server模型要解決調試領(lǐng)域中這種特殊且日趨普遍的情況最有效的解決在Client/Server模型中Client調試器即為本地調試器運方法就是該文討論的遠程調試。行在主機環(huán)境下Server 調試器即為調試服務(wù)器,與目標程序通常調試器運行的環(huán)境’主機"與目標程序運行的環(huán)境一起運行在目標環(huán)境下。 圖1給出了三種典型的Client/Server(目標機" )相同遠程調試是指主機和目 標機為物理上分離的模型。中國煤化工系統兩個(gè)系統之間用網(wǎng)絡(luò )或-般線(xiàn)性端口連接。遠程調試系在配置HCNMH G與同一文件系統連接統由三部分組成主機上的本地調試器,目標機.上的調試服務(wù)的同一機器L必疋件仞任1舊過(guò)區租上分離的遠程調試特器遠程調試協(xié)議。該文第二節介紹遠程調試的一般概念第三例在配置B中主機系統Client軟件通過(guò)TCP/IP連接遠程調"該文的研究工作受?chē)H科大校預研金支持。作者簡(jiǎn)介黃瑞芳副研究員。朱敏碩士,講師。二位均從事計算機可視化和并行調試環(huán)境的研究與設計。計算機工程與應用2001.1 125試服務(wù)器主機和目標系統共享同一文件系統。配置C是最靈試必須實(shí)現以下內容:活的結構主機Client與目標Server的連接采用分離的文件系( 1遠程調試設置統甚至目標機可以沒(méi)有文件系統。有兩種方式將本地調試器設置成遠程調試模式- -種是本地調試器本身提供了自動(dòng)配置(Configure)機制并為可支持的.Chient.遠程目標提供調試服務(wù)器及通訊連接實(shí)現,如GDB支持i960Server( Nindy ) EB29K、Vx Works 等遠程環(huán)境;另一種是手工方式設置此時(shí)實(shí)現者必須實(shí)現一整套基于 本地調試器的遠程調試配置、基于遠程操作系統的遠程調試服務(wù)器、基于連接環(huán)境的通訊協(xié)議其中遠程調試設置的主要內容就是在本地調試器軟件A核心模塊和底層模塊之間插入轉換機制用遠程通訊模塊置換主機系統目標系統本地底層模塊遠程通訊模塊主要有二部分打包遠程命令和Client1 TCP聯(lián)接 Server解包遠程回答。(目標器序)(2 )打包遠程命令( putpackage )-個(gè)遠程調試命令可能需分解為- -個(gè)或多個(gè)請求包,請求文件彩統文件系統包的個(gè)數取決于命令類(lèi)型以及通訊緩沖區的容量大小同一命令的請求包必須連續發(fā)往遠程目標發(fā)送函數實(shí)現依賴(lài)與主機主機系航與目標機的鏈接機制。Clent| TCPP聯(lián)越(3解包遠程回答( gtpackage)接收遠程目標的回答包。對應于每--個(gè)發(fā)往目標的遠程調試命令- -定有對應的回答回答包可以不止一個(gè)第-個(gè)回答B包包含有后續包個(gè)數的信息同一命令的多個(gè)回答包必須連續送回。若回答包顯示的回答表示為約定的錯誤getpackage 直圖1遠程調試的 Client/Server模型接報告用戶(hù)。在Client/Server模型下用戶(hù)程序駐留在目標系統,由主3.2調試服務(wù) 器機系統Client啟動(dòng)與目標硬件、服務(wù)器軟件的連接。運行在目標機上的調試服務(wù)器實(shí)現對用戶(hù)目標程序的低2.2 Client/Server 模型的調試功能分布層監控。需要實(shí)施遠程調試的目標環(huán)境通常只具有很少的支持Client軟件分擔用戶(hù)界面和符號處理、Server軟件承擔目調試的低級功能調試服務(wù)器的目的就是如何利用這些極少的標監控是最常見(jiàn)的功能分布方式表1規劃了Client/Server模支持取得常規的調試要求。遠程調試系統的調試能力取決于目型的一般調試功能分布情況。標環(huán)境對調試的支持度。專(zhuān)1 Client/Server模型的調試功能分布調試服務(wù)器對運行環(huán)境操作系統的基本要求是:能夠建立調試服務(wù)器與目標程序的關(guān)系。本地調試器調試服務(wù)器提供檢測程序產(chǎn)生異常的手段。運行在主機系統運行在目標系統能夠訪(fǎng)問(wèn)目標任務(wù)的內存映象。對源文件和符號表的訪(fǎng)問(wèn)及處理監控 目標程序能夠訪(fǎng)問(wèn)目標任務(wù)的狀態(tài)及其寄存器。形成發(fā)給調試服務(wù)器的請求形成發(fā)給主機調試器的回答在必要的目標系統支持下根據協(xié)議調試服務(wù)器實(shí)現以利用調試協(xié)議發(fā)送調試命令給利用調試協(xié)議 接收協(xié)議命令并下內容:回送響應建立與主機調試器的連接;掌握目標程序進(jìn)程信息掌握目標進(jìn)程的環(huán)境信息解包主機請求包;打包回答包;3遠程 調試實(shí)現實(shí)施目標程序監控包括:中斷處理、步進(jìn)實(shí)現、目標任務(wù).遠程調試系統對用戶(hù)發(fā)布的調試請求的處理過(guò)程是主機虛存空間訪(fǎng)問(wèn)、寄存器和任務(wù)棧的訪(fǎng)問(wèn)。本地調試器通過(guò)其界面獲取用戶(hù)請求并對其進(jìn)行語(yǔ)法分析及中斷處理是斷點(diǎn)、步進(jìn)實(shí)現的基礎。為了檢測另-個(gè)程序符號處理將用戶(hù)請求轉換為機器級調試命令如果實(shí)施的是是否出現中斷,調試服務(wù)器利用目標操作系統提供的異常檢測本地調試,這種機器級調試命令將采用本地操作系統支持實(shí)機制使自己成為目標程序的中斷處理器。當目標程序產(chǎn)生異現對遠程調試來(lái)說(shuō)這種命令必須符合遠程調試協(xié)議的規定,常時(shí) 調試服務(wù)器能夠捕獲中斷消息并判斷目標程序發(fā)生了什形成調試請求包請求包通過(guò)通訊線(xiàn)路按協(xié)議的規定送往目標么中斷進(jìn)行相應處理。調試服務(wù)器處理目標任務(wù)正常結束中機。遠程目標上的調試服務(wù)器接收請求包根據請求類(lèi)型在目斷以及目標中國煤化工系統原始處理。標操作系統的支持下實(shí)施對目標進(jìn)程的執行控制或數據訪(fǎng)問(wèn),fY HC NMHG處理結果以回答包的形式發(fā)往主機。主機接收回答包并解包將回答信息分析處理為源級格式通過(guò)調試器界面顯示給用戶(hù)。遠程調試協(xié)議定義主機調試器與目標調試服務(wù)器之間如3.1 本地調試器何協(xié)同工作。其主要內容是規定主機與目標之間為實(shí)現遠程調本地調試器除完成源級調試的核心操作外,針對遠程調試進(jìn)行通訊的條件、通訊的內容及通訊方式。在協(xié)議的規定下126 2001.1 計算機工程與應用主機調試器和調試服務(wù)器可以用各種形式實(shí)現。停止狀態(tài)描述主機與目標機建立遠程調試通訊的前提條件是:S目標任務(wù)因斷點(diǎn)中斷停止主機方面理解約定的協(xié)議;-切就緒后,有啟動(dòng)主機與W目標任務(wù)正常退出目標機連接的手段調試完畢后,有切斷主機與目標機連接、恢目標任務(wù)因其他異常中止執行復程序運行的手段。目標機:能夠建立調試服務(wù)器與目標程序之間的監控關(guān)5基于遠程調試的并行調試器設計系提供有讓一個(gè)進(jìn)程訪(fǎng)問(wèn)另一個(gè)進(jìn)程執行映象的手段。最后描述一個(gè)筆者自行設計的、基于遠程調試的、針對通訊方式-般采用 包Package )的形式進(jìn)行同步傳輸。主MPP體系結構的并行源級調試器Pdebug。 文章主要介紹其遠機送往目標機的為請求包,目標送往主機的包為回答包。當主程調試的具體實(shí)現。機或目標機任-方發(fā)送一個(gè)包進(jìn)行本方的處理后都處于等典型的MPP系統由控制結點(diǎn)和并行處理機陣列組成并待wait接收下一個(gè)包的狀態(tài)。行處理機陣列由多個(gè)同構的計算結點(diǎn)組成??刂平Y點(diǎn)與計算結一個(gè)請求包通常應包含的內容有調試請求、參數以及是點(diǎn)通過(guò)點(diǎn)對點(diǎn)高速通道進(jìn)行通訊,計算結點(diǎn)之間采用3維互聯(lián)否跟有附屬包。請求一般 包括有控制進(jìn)程執行的步進(jìn)( step和網(wǎng)絡(luò )連接以IPC機制作為通訊手段?;謴? continue )訪(fǎng)問(wèn)數據的內存讀寫(xiě)( get/GET和寄存器讀寫(xiě)計算結點(diǎn)由于其處理任務(wù)的特殊性,一般只具備支持數學(xué)計( memory/MEMORY等等?;卮鸢膬热輵?目標程序停算的系統環(huán)境因而只有很少的調試支持。采用遠程調試機制止狀態(tài)、寄存器狀態(tài)請求的數據內容以及請求是否正確完成。是解決并行調試器設計中克服計算結點(diǎn)弱調試支持的最有效GDB的請求和回答數據被包裹在-個(gè)稱(chēng)為調試包的結構中。方法。其內容描述如下:5.1 Pdebug 總體結構structcommpkt {Pdebug邏輯上由三部分組成主控調試器MDB本地調試char req ;//請求碼器GDB調試服務(wù)器Server(見(jiàn)圖2 ) Server與目標任務(wù)- -同運nt len//數據傳輸長(cháng)度unsigned char *iocn. addr ; //數據傳輸 主機緩沖區地址行在計算結點(diǎn)上用戶(hù)并發(fā)進(jìn)程中的每個(gè)進(jìn)程對應一個(gè)本計算結點(diǎn)上的ServerServer負責監控本結點(diǎn)上用戶(hù)進(jìn)程的行為,CORE_ ADDR pn_ addr; // 數據傳輸目標機地址int reg _num ;//讀寫(xiě)寄存器號對于每對目標進(jìn)程和Server ,在控制結點(diǎn)上對應- -個(gè)基于 U-unsigned char *reg addr; //主機寄存 器緩沖區地址nix的源級調試器GDB完成源級調試的核心處理。主控制調試nt stop_ status ;//目標程序停止狀態(tài)器是整個(gè)調試系統的主控部分,同時(shí)起前端及用戶(hù)界面作用。char rel_ code ;//回答包狀態(tài)碼表2給出了GDB通訊包協(xié)議內容。;控制結點(diǎn)表2 GDB 通訊包L主控明試置MDB請求請求碼.包內容描述GDB .....| GDB讀寄存器reg adder寄存器目標地址len寄存器的內容長(cháng)度回答包ret code = Q(ok)第二條返回數據傳輸寄存器內容開(kāi)結點(diǎn)汗算結點(diǎn)ret_ code = E(err) 第二條返回數據包含錯誤信息[ Severl Server寫(xiě)寄存器reg_ _addr 寄存器目標地址(戶(hù)任務(wù))(用戶(hù)任務(wù))len 寄存器的內容長(cháng)度回答包ret_ code=O成功接收.......................ret_ _code=E接收失敗圖2 Pdebug的總體結構第二條返回數據包含錯誤信息讀內存npr_ addr目標任務(wù)內存地址5.2遠程 調試實(shí)現len數據長(cháng)從Pdebug的總體結構可以看出,- 條由GDB和Server組iocn. addr :GDB接收數據緩存地址0讀成功成的調試線(xiàn)就是-個(gè)遠程調試系統GDB為本地調試Server第二條返回數據為所讀內存的內容是調試服務(wù)器。其遠程調試的實(shí)現利用了GDB的調試目標抽第二條返回數據為錯誤信息象機制文章首先分析GDB的這一機制然后介紹如何用這一寫(xiě)內存Mpn_ addr :自標任務(wù)內存地址機制完成遠程調試設置。iocn_ addr :待寫(xiě)數據的GDB緩存地址5.2.1 GDB 對調試目標的抽象-target寫(xiě)成功從靜態(tài)的角度看CDB可以調試多種可執行文件格式如第二條發(fā)送數據為寫(xiě)入數據a.out coff 以及庫檔案:從動(dòng)態(tài)的角度看.CDB可以調試尚未運寫(xiě)有錯行的文件、中國煤化工攻后的內存映象文件?;謴湍繕巳蝿?wù)執行Cpn_ add執行開(kāi)始地址CDB將它能YHCNMHGargel。步進(jìn).pn_ addr執行開(kāi)始地址GDB定義了4種調試target none core exec child。none對于s. C請求,調試服務(wù)器不能立即發(fā)送回答包須等到表示當前沒(méi)有調試對象core表示當前的調試對象為core目標程序執行停止后才能向主機發(fā)回答包。此時(shí)除ret .codedump文件jexee和child目標涉及可執行文件,分別表示可執外包中還有如下回答信息:行文件在調試過(guò)程中的不同階段,當可執行文件沒(méi)有運行時(shí),計算機工程與應用2001.1 127就是一個(gè)exec目標,一旦發(fā)布run" 命令就成為child 目標。5.3遠程 調試設置child目標執行終止則可執行文件又成為了exec目標。將它們組合成-個(gè)遠程調試系統的方法是置GDB為遠程.5.2.2調試函數的抽象說(shuō)明一-arget ops調試模式,即向GDB發(fā)布target remote" 命令使得當可執行有了target這種抽象,GDB對各種調試對象的控制就歸文件成為child" 目標時(shí)GDB選擇remote_ _ops" 為當前tar-結為了對target 的控制,為此CDB為target定義了一種對tar-get_.ops。remote.ops中各函數指針指向的函數將遵循遠程調試get進(jìn)行調試控制所需要的調試函數的集合的抽象- -tar-協(xié)議將對遠程target的控制請求轉換成各種調試命令的發(fā)送get_ops,target._ops是-個(gè)由函數指針組成的結構,其基本元與反饋消息的接收。素有:Struct larget. _ops {6結束語(yǔ)void(* to. resume X );//恢復目標運行文章介紹了遠程調試的基本原理、設計方法。已設計的基void(* to _waitXI );//等待目標停止于遠程調試的并行調試器Pdebug已經(jīng)成功地運行在-種MPPvoidK* to. felch. register ); //讀目標寄存器巨型機系統上,為該系統的并行應用開(kāi)發(fā)提供了良好的調試手void(* to_ store_ registerX ); //寫(xiě) 寄存器段。(收稿日期2000年1月)in(* to. _xfer. memory)I );//訪(fǎng)問(wèn)內存in(* to. _insert_ breakpointX ); //插入段點(diǎn)參考文獻int(* to_ remove_ breakpoint I );//移去段點(diǎn)1.Robert Pizzi.GNU Debugger Internal Archiechre.Department of Ap-void(* to_ creat_ inferior Y );//建立目標進(jìn)程plied Science University of California Davis Lawrence LivermoreNational Laboratory ,1993.12 ;16:94-006665GDB的調試控制策略是對target的各種調試控制最終將2.Debugging with GDB.Edition 4 GDB Version 4.2.Copyrighl( C )1995轉化為對target_ .ops 中函數的引用,即GDB對target 最底層Free Software Foundation ,Inc.1995.1.14的控制都由相應target_ _ops 提供。GDB 提供的target_ _ops有:3.Digital UNIX Ladebug Debugger Manual.Digital Equipment Corpora-core_ops定義了對core目標的低層操作。tion :1996. exec _ops 定義了對exee目標的低層操作。4.Cray TotalView Debugger.Cray Research ,Inc. 1994 ,1995child_ ops :當target 為child 時(shí)運行在基于ptrace服務(wù)環(huán)5.Svenkatesan,Brahma Dathan.Test and Debugging Distributed Progra-境下的調試函數。ms Using Global Predicates.IEEE Transactions on Software Engineer-. procfs. ops: 當target 為child時(shí)運行在基于進(jìn)程文件ing ,1995.2;212):163-177系統環(huán)境下的調試函數。6.Mariano G Fernandes Sumit Ghosh.Ddbx- -LPP :A Dynamic SoftwareTool for Debugging Asynchronous Distributed Algorithms on Loosely.remote_.ops進(jìn)行遠程調試時(shí)的調試函數。Coupled Parallel Processors.J.System Softw根據系統配置以及用戶(hù)設置CDB將選擇適合當時(shí)環(huán)境7.High Performance Debugging Forum.HPD Version 1 Standard Com- -的target.ops來(lái)完成底層控制。mand Interface for Parallel Debuggers ,1997中國煤化工MYHCNMHG128 2001.1 計算機工程與應用

論文截圖
版權:如無(wú)特殊注明,文章轉載自網(wǎng)絡(luò ),侵權請聯(lián)系cnmhg168#163.com刪除!文件均為網(wǎng)友上傳,僅供研究和學(xué)習使用,務(wù)必24小時(shí)內刪除。
欧美AAAAAA级午夜福利_国产福利写真片视频在线_91香蕉国产观看免费人人_莉莉精品国产免费手机影院