[發明專利]代碼練習軟件中代碼的運行和圖形化的解析方法在審
| 申請號: | 201410812693.4 | 申請日: | 2015-08-04 |
| 公開(公告)號: | CN104503793A | 公開(公告)日: | 2015-07-29 |
| 發明(設計)人: | 王沖 | 申請(專利權)人: | 風騰科技(北京)有限公司 |
| 主分類號: | G06F9/445 | 分類號: | G06F9/445;G09B19/00 |
| 代理公司: | 暫無信息 | 代理人: | 暫無信息 |
| 地址: | 100083 北京市海淀區信*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 代碼 練習 軟件 運行 圖形 解析 方法 | ||
1.一種代碼練習軟件中代碼的運行和圖形化的解析方法,所述方法使用編譯器、程序行為信息生成器和瀏覽器,其特征在于包括步驟:
1)首先用戶提交的代碼經過編譯器進行編譯,確認無誤后返回;
2)上述編譯過程中生成兩份結果:一個是二進制代碼的機器語言,一份是記錄有代碼中變量的作用域、數字顯示格式信息;
3)開始模擬在代碼運行中的每一個步驟,提出每一個步驟的狀態信息;
4)將所述狀態信息封裝成引擎,將包括程序執行行為的jsvascript文件提供給前端程序;
5)前端收到Jsvascriptjs文件,然后將信息分解,為展示做好準備;
6)最后經過瀏覽器的渲染,顯示出圖形化的結果。
2.根據權利要求1所述的解析方法,其特征在于,在步驟1,所述編譯過程包括基于clang的代碼編譯過程,包括具體步驟:
1.1)提交代碼:訪問者通過前端編輯器自動提交C代碼給圖形化代碼運行調試器;
1.2)Clang詞法分析和語法分析:調用Clang編譯器,對提交的代碼做詞法和羽凡分析,生成抽象語法樹給代碼生成器,生成變量輸出格式和變量活躍區間信息到文件中;
1.3)代碼生成器:從Clang讀入抽象語法樹,得到匯編代碼,進而生成目標文件;
?匯編代碼中包含變量名與寄存器對應關系,?匯編指令與代碼行號對應關系等符合DWARF標準的調試信息;
1.4)鏈接器:讀入代碼生成器生成的目標文件,再和已有的動態鏈接庫鏈接生成最后的可執行文件;
?該可執行文件包含了調試信息和定制的方便追蹤代碼執行過程的庫函數。
3.根據權利要求1所述的解析方法,其特征在于,在步驟3,?包括:
3.1)將包括程序符號表信息的可執行文件加載入LLDB進程中;
3.2)將斷點設置在main函數位置,確保trace信息從main函數的第一行語句開始收集;
3.3)使用單步執行命令,在每次單步執行后進行程序運行狀態的收集;
3.4)收集當前程序運行的狀態信息,所述狀態信息包括所有在作用域內的變量的值、調用棧的運行情況,堆中對象的情況、全局變量的情況和當前函數內局部變量的情況;
3.5)將步驟3.4收集的狀態信息,采用結構化的方式,利用Python中的dict字典結構存儲;如果程序尚未執行結束,重復單步執行的步驟;
3.6)利用json-dump庫,將上述字典結構存儲的程序狀態信息,以json形式保存到文本文件中;
3.7)將Json-dump生成的json結構數據,經過JS渲染代碼生成器,生成已經包含程序運行狀態記錄的Javascript程序代碼。
4.根據權利要求1-3其中之一所述的解析方法,其特征在于,在步驟6,進一步包括:
6.1)程序運行狀態記錄信息裝載:將生成的Javascript文件裝載到渲染期內,以數組的方式保存到渲染器內部;
6.2)單步程序運行狀態提取:根據當前程序運行的單步計數,從數組中提取對應的狀態,并交給渲染器渲染;
6.3程序狀態渲染:根據提取的數組內容,分別對棧幀、堆空間、全局變量、指針引用關系進行渲染;得到最終的顯示效果。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于風騰科技(北京)有限公司,未經風騰科技(北京)有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201410812693.4/1.html,轉載請聲明來源鉆瓜專利網。





