[發明專利]一種在線調試C/C++程序的方法有效
| 申請號: | 201310444806.5 | 申請日: | 2013-09-25 |
| 公開(公告)號: | CN103473177B | 公開(公告)日: | 2016-11-30 |
| 發明(設計)人: | 張化勁;吳凌;楊楠;王千祥 | 申請(專利權)人: | 北京大學 |
| 主分類號: | G06F11/36 | 分類號: | G06F11/36 |
| 代理公司: | 暫無信息 | 代理人: | 暫無信息 |
| 地址: | 100871*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 在線 調試 c++ 程序 方法 | ||
技術領域:
本發明屬于軟件技術領域,具體涉及一種在線調試C/C++程序的方法。?
背景技術:
傳統上,程序員在本地集成開發環境中開發并調試程序。調試客戶端和被調試程序都運行在一臺機器上。程序員通過設置斷點、單步運行、查看變量等操作,查看程序的運行時狀態是否與預期相符,從而查找錯誤,修復程序。?
隨著云計算的興起,越來越多的程序員開始使用在線集成開發環境,在瀏覽器中開發程序。使用在線集成開發環境使得程序員可以不受使用的機器性能配置、操作系統的限制,隨時隨地開發程序,即時把開發的程序同步到服務器上。傳統的調試方法在面對這一新場景時,無法應對以下幾個挑戰:?
(1)同步問題。在線集成開發環境下,程序的調試動作發生在瀏覽器端,而調試的程序運行在服務器端,服務器端的調試狀態與瀏覽器端同步存在問題;?
(2)多用戶管理。本地開發環境中,一次調試只有一個用戶,不需要進行多用戶的管理;但是對于在線開發環境來說,需要并行的支持許多用戶同時的調試,動態分配云端資源給多個調試實例,因此不可避免要涉及多用戶的管理和資源分配。?
(3)安全問題。由于用戶的程序需要在服務器端運行,如果用戶輸入惡意程序,將可能使整個系統癱瘓。?
因此,傳統的基于本地集成開發環境的調試方法在在線集成開發環境中運用存在局限,不能滿足基于瀏覽器的在線調試。?
發明內容:
針對上述問題,本發明的目的是提供一種基于瀏覽器的在線程序調試方法。該方法使得程序員能夠在在線集成開發環境中發送調試命令、實時獲取服務器端調試程序狀態、進行控制臺輸入輸出,從而在瀏覽器中完成程序的調試工作。?
本發明的技術方案如下:?
(1)程序員在瀏覽器端發送“開始調試”的命令,服務器端的控制進程接收到“開始調試”的命令,安全掃描將要運行的程序代碼,掃描通過后啟動一個以用戶名標識的被調試進程。同時啟動一個守護線程,監控被調試進程的運行時間。?
(2)程序員在瀏覽器端控制臺可以輸入數據,服務器端的控制進程接收到控制臺輸入后,導入被調試進程的輸入流中。同時,控制進程獲取被調試進程的控制臺輸出。服務器把控制臺輸出推送到瀏覽器端,顯示給程序員。?
(3)在調試過程中,程序員可以在瀏覽器端發送一系列調試命令,包括斷點添加、斷點刪除、單步進入、單步跳出、運行到當前行、繼續、查看變量值。控制進程接收到調試命令后,對被調試程序執行調試命令對應的操作。?
(4)被調試進程實時地把狀態信息反饋給控制進程。控制進程解析狀態信息文本,推送相應狀態到瀏覽器端。?
(5)調試結束后,控制進程終止被調試進程,調試結束。?
上述的在線程序調試方法,所屬步驟(1)中,程序員在瀏覽器端發送“開始調試”命令時,同時附帶用戶名信息、被調試程序相對地址。控制進程通過上述信息定位被調試程序的絕對地址,啟動被調試程序。?
上述的在線程序調試方法,所屬步驟(1)中,當被調試程序運行時間超過設定的閾值時,守護線程終止被調試進程,本次調試結束。?
上述的在線程序調試方法,所屬步驟(3)(4)中,服務器端的控制進程獲取被調試進程狀態信息和控制臺輸出后,通過服務器端推送技術(comet),把控制臺輸出和被調試進程狀態信息推送到瀏覽器端。?
上述的在線程序調試方法,所屬步驟(4)中,服務器端的控制進程獲取被調試進程狀態信息文本后,通過文本語言的詞法分析、語法分析,得到運行狀態。運行狀態包括:程序當前運行的位置、瀏覽器端需要查看變量的值。?
上述的在線程序調試方法,所屬步驟(5)中,被調試程序的終止有三種可能:程序運行結束自然終止、用戶手動終止調試、運行超時守護進程終止調試。?
本發明的技術效果在于:本發明的方法保證了在在線集成開發環境中,程序員在瀏覽器端能夠正確的調試程序,保證了瀏覽器端和服務器端調試狀態的一致性;提供了多用戶的管理機制;使得程序員在瀏覽器端能夠控制被調試進程的運行過程。?
附圖說明
圖1表示在本發明中調試的流程。?
圖2表示在本發明中設置斷點的示例?
圖3表示在本發明中控制臺輸入的示例?
圖4表示在本發明中單步調試的示例?
圖5表示在本發明中調試命令“下一行”的示例?
圖6表示在本發明中查看變量值的示例?
圖7表示在本發明中調試結束的示例?
具體實施方式:
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于北京大學,未經北京大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201310444806.5/2.html,轉載請聲明來源鉆瓜專利網。





