[發明專利]用于調試過程中的代碼動態切換的方法和系統有效
| 申請號: | 201310090980.4 | 申請日: | 2013-03-21 |
| 公開(公告)號: | CN104063258B | 公開(公告)日: | 2017-05-03 |
| 發明(設計)人: | 蔣健;紀金松;官孝峰;張嗣元 | 申請(專利權)人: | 國際商業機器公司 |
| 主分類號: | G06F9/45 | 分類號: | G06F9/45 |
| 代理公司: | 中國國際貿易促進委員會專利商標事務所11038 | 代理人: | 付建軍 |
| 地址: | 美國*** | 國省代碼: | 暫無信息 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 用于 調試 過程 中的 代碼 動態 切換 方法 系統 | ||
技術領域
本發明涉及程序調試,具體地說,本發明涉及一種用于調試過程中的代碼動態切換的方法和系統。
背景技術
當進行編程時,大多數的應用程序都是在源代碼級別進行調試。源代碼一般是用高級語言編寫的,高級語言又主要是相對于匯編語言而言的,它是較接近自然語言和數學公式的編程,基本脫離了機器的硬件系統,用人們更易理解的方式編寫程序。因此,程序員的諸如步進、設置斷點等調試操作都是基于高級語言源代碼視圖。但是,實際上,調試器接收、運行以及操作的是程序的二進制碼(binary)(源代碼的編譯后的版本),從而產生運行結果。在編譯器產生的調試信息的幫助下,由調試器負責把源代碼映射到二進制碼或者把二進制碼映射到源代碼。調試信息例如提供了如下信息:二進制碼中的每個指令的行號、二進制碼中的每個存儲器位置的數據類型等。
圖2至5示出了一個簡單的調試過程。在圖2中,調試器在源代碼視圖上處理調試操作。具體地說,在源代碼的第8行設置了一個斷點。在圖3中,調試器查詢調試信息,從而找到相關的二進制指令。在這里要注意的是,為了使二進制指令具有可讀性以使得理解本發明,圖3-4中顯示的是利用助記符的匯編語言視圖,其與二進制指令具有直接對應關系,但是現實中并不一定存在這種中間的匯編語言視圖。例如,在圖3中,行號為8的三行指令對應于圖2中的第8行中的源代碼“a--;”。當調試器運行二進制碼并且到達該斷點時的情況顯示在圖4中。在圖5中,將斷點反映到源代碼視圖中從而顯示給用戶。在整個調試過程中,調試信息對于使調試準確和平順而言是非常關鍵的。更具體地講,該方法的基礎是將二進制碼中的每個指令準確地映射到源代碼行。
將源代碼轉換為二進制碼的過程稱為編譯。為了使二進制碼運行起來更快,編譯器通常通過編譯在保持邏輯一致性的情況下盡可能地縮短二進制碼的執行時間以及減小二進制碼的大小,這被稱為編譯器優化。但是,優化產生了很多對于調試的麻煩,例如,優化會到處移動、改變、分裂、合并或刪除代碼,這使得源代碼信息的順序完全混亂。
例如可能存在如下的優化技術:調度器會打亂指令的順序以避免硬件流水線停頓(pipeline bubble),其對于調試的副作用是在源代碼視圖中,連續的步進將會隨機跳轉;循環不變量外提技術把與循環變量無關的計算移動到循環之外,其對于調試的副作用是會隨機地步進以及步出循環體。
顯然,性能和可調試性都是很重要的,但是它們彼此沖突。人們已經嘗試了許多方式來使優化調試成為可能,例如制定新的調試信息標準。無論使用何種調試信息標準,通常的方式是在二進制碼中保持源代碼信息并將其送給調試器。但是,由于優化的性質從而二進制碼與源代碼不再對準,該方法仍然無法解決這一困難。
已經提出了一些技術來提供更準確的調試體驗。例如,IBM編譯器具有-qoptdebug選項,使用該選項進行編譯將會產生示出優化的高級語言的偽碼。例如,對于下面的函數:
將會產生下面的偽碼:
在此情況下,調試將直接基于該偽碼進行。該方法把偽碼與二進制碼映射得很好,因為它們兩者都是優化的代碼。但是,從原始代碼到偽碼的映射卻并不直接易懂。用戶仍會對調試未識別的代碼感到困惑。
為了解決性能和可調試性的平衡,在專利文獻US2011/0271259A1中公開了一種方法,在該方法中,對于一部分子例程,編譯器產生優化的目標代碼和可調試的目標代碼兩者,其中根據配置文件、編譯器開關、用戶輸入等來確定對哪些子例程產生兩個版本的目標代碼。當判斷一子例程需要調試時,通過在該子例程的優化的目標代碼中插入跳轉指令而跳轉到可調試的目標代碼。該方法存在如下問題:當對每個子例程或大部分子例程進行過調試時,各個子例程的優化的目標代碼被逐漸地跳轉到可調試的目標代碼,直至全部跳轉到可調試的目標代碼,相應地,程序運行速度會越來越慢;此外,采用該方法,需要把兩個版本的目標代碼都加載到內存中,這會大大地消耗內存資源。
發明內容
基于以上的描述,希望提供一種能夠在調試過程中兼顧性能和可調試性的代碼動態切換方法和系統。
為了解決上述的技術問題,本發明的發明人提出了動態代碼切換的概念,并且提出了為了實現代碼動態切換而需要的技術。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于國際商業機器公司,未經國際商業機器公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201310090980.4/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:運行應用程序的方法和裝置
- 下一篇:一種加載工具條的方法及裝置





