<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于ELF的嵌入式軟件源碼級交叉調試技術

          基于ELF的嵌入式軟件源碼級交叉調試技術

          作者: 時間:2012-03-20 來源:網(wǎng)絡 收藏

          用機器單步執(zhí)行時,每執(zhí)行完一條機器指令立即讀取當前PC,判斷程序停止位置。調試器對程序的控制是即時交互的,當單步執(zhí)行結束、跳轉或進入函數(shù)調用時,調試器都會即時得知。不采用機器單步,則不具有這種即時掌握程序運行狀態(tài)的便利,需要在運行前反匯編目標代碼,通過分析匯編指令預測程序單步執(zhí)行可能的出口位置,并在該處設上斷點??赡艿某隹谖恢冒ㄔ撔兄噶畹慕K止地址、跳轉、分枝跳轉、函數(shù)調用等指令。對于跳轉指令,能得到絕對地址則直接在跳轉地址處設斷點,不能得到跳轉地址則在指令處設斷點,再執(zhí)行跳轉指令由當前PC值確定程序停止的位置。對于函數(shù)調用指令,如果采用單步跳過(stepover)方式,則將其作為普通指令看待,直接執(zhí)行調用函數(shù);如果采用單步進入(stepinto)方式,則需在指令處設斷點,再執(zhí)行調用指令,以進入函數(shù)內部讓用戶繼續(xù)跟蹤程序的執(zhí)行。

          以單步跳出方式(stepout)執(zhí)行程序時,以子程序為單位,需執(zhí)行完當前子程序的所有代碼,在調用該子程序的下一條語句處停止。通過反匯編當前子程序的所有指令,可得到該子程序所有可能的函數(shù)返回出口,在這些函數(shù)返回指令處設臨時斷點,程序運行到斷點處再執(zhí)行該返回指令跳出當前子程序,處理調用該子程序的語句行的后繼信息,最終確定程序停止位置。

          5、數(shù)據(jù)瀏覽

          數(shù)據(jù)與指令同樣是構成程序的根本。數(shù)據(jù)類型繁多,不同的類型處理起來有所不同,其基本原理是由數(shù)據(jù)名找到存放該數(shù)據(jù)的地址,再從地址中取出數(shù)據(jù)的值。關鍵在于找到名與地址的映射關系。這些信息可從.debug,.symtab等節(jié)中得到。全局變量一般可得到直接的地址信息,而局部變量采用堆棧方式存放在內存中,需根據(jù)從.debug中得到的該變量在堆棧中的位置信息來確定地址。采用表結構來管理變量,將每個變量的名、地址等信息登記在表中,將對數(shù)據(jù)值的操作轉化為對相應地址的內存單元操作,如查看變量即為讀取該變量所在內存單元的內容。

          5 交叉調試器JDBG簡述

          JDBG采用圖形用戶界面,相應的命令提供圖形按鈕或菜單,并提供快捷鍵。進入調試之前,先連接目標機,在連接時設置連接參數(shù)并保存,在以后的連接中可直接使用已保存的設置參數(shù)。當宿主機/目標機處于連接狀態(tài)時,下載目標文件,啟動調試器。調試器啟動后,用戶可在打開的源文件中設置斷點,運行下載的目標程序,查看/修改寄存器、內存的內容。當運行的目標程序停止后,返回停止點源碼信息,用戶可以觀察數(shù)據(jù),添加新的斷點或刪除已設斷點,控制程序的單步執(zhí)行或連續(xù)執(zhí)行,或退出調試狀態(tài)。

          JDBG的功能流程如圖5所示:

          6結束語

          本調試器采用基于目標文件分析的實現(xiàn)方案,以remote協(xié)議作為宿主機/目標機通訊協(xié)議,具有很大的擴充性,可擴展為多語言多機器調試器,并可擴展為目標模塊級的動態(tài)下載與調試,這正是我們下一步的研究內容。

          參考文獻

          [1] Jonathan B.Rosenberg.How Debuggers Work,New York:Wiley Computer Publishing,1996

          [2] Beatrice Lazzerini. Lanfranco Lopriore.Program debugging environments:design and utilization,New York: Ellis Horwood,1992

          [3] 楊均 熊玲青 謝漢東.UNIX系統(tǒng)V第4版 程序員指南:ANSI C和編程支持工具,北京:電子工業(yè)出版社,1992

          [4] the GDB developers.GDB Remote Serial Protocol,1988-2002 Free Software Foundation, Inc


          上一頁 1 2 3 下一頁

          評論


          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();