本發(fā)明專利技術(shù)公開了一種代碼調(diào)試方法及裝置,涉及計算機軟件編程技術(shù)領(lǐng)域,解決現(xiàn)有的Python代碼調(diào)試過程復(fù)雜繁瑣、效率低的問題。本發(fā)明專利技術(shù)主要的技術(shù)方案為:獲取用戶在代碼中設(shè)置的斷點行號,得到斷點集合;根據(jù)所述代碼執(zhí)行的當(dāng)前行號,判斷所述當(dāng)前行號是否在所述斷點集合中;若存在,則執(zhí)行中斷事件函數(shù),以中斷所述代碼的執(zhí)行。本發(fā)明專利技術(shù)主要用于調(diào)試Python代碼程序。
Code debugging method and device
The invention discloses a code debugging method and a device, relating to the technical field of computer software programming, and solving the problems of complicated, tedious and low efficiency in the debugging process of the existing Python code. The technical scheme of the invention is: gets the line number breakpoints in the code, get the breakpoint set; according to the current line number of the code execution, judging whether the current line number is within the breakpoint set; if there is, executes an interrupt event function, to interrupt the execution of the code. The invention is mainly used for debugging Python code programs.
【技術(shù)實現(xiàn)步驟摘要】
一種代碼調(diào)試方法及裝置
本專利技術(shù)涉及計算機軟件編程
,尤其涉及一種代碼調(diào)試方法及裝置。
技術(shù)介紹
IronPython是Python語言的.NET實現(xiàn)。有了IronPython,.NET開發(fā)人員可以在自己的軟件產(chǎn)品中通過集成IronPython向用戶提供Python代碼的運行功能,對于某些業(yè)務(wù)功能需要用戶自己通過Python代碼定制的場景,IronPython的出現(xiàn)可謂是給.NET開發(fā)人員提供了強有力的技術(shù)支撐。但是,.NET開發(fā)人員在自己的軟件產(chǎn)品中通過集成IronPython向用戶提供Python代碼的運行功能會遇到一個問題:用戶編寫完處理具體業(yè)務(wù)的Python代碼提交到軟件中運行的時候可能會因編寫的Python代碼錯誤導(dǎo)致用戶預(yù)期的業(yè)務(wù)功能無法實現(xiàn),此時用戶需要查找自己編寫的Python代碼中的錯誤并修正它。用戶通過檢查Python代碼發(fā)現(xiàn)代碼中幾個關(guān)鍵位置存在的疑點,希望Python代碼的幾個存在疑點的關(guān)鍵位置能夠在執(zhí)行的時候暫停以方便用戶分析錯誤,從而解決代碼存在的問題。在傳統(tǒng)方案中,如果用戶編寫的Python代碼存在錯誤,一般是用戶自己通過在代碼關(guān)鍵位置插入彈框代碼來實現(xiàn)代碼運行到關(guān)鍵位置時的暫停效果,然后用戶再分析代碼及代碼的運行效果來判斷代碼錯誤的位置及原因。然而,使用向Python代碼關(guān)鍵位置插入彈框代碼的方式雖然也可以讓Python代碼在關(guān)鍵位置執(zhí)行的時候暫停下來,但是這種做法仍然存在一個問題:當(dāng)用戶向Python代碼關(guān)鍵位置插入了彈框代碼,Python代碼運行到插入了彈框代碼的關(guān)鍵位置處暫停下來之后,如果用戶通過分析代碼行為認為代碼關(guān)鍵位置后面的某個位置也存在疑點,想在執(zhí)行到后面的某個位置也能暫停下來的時候,使用傳統(tǒng)的向代碼插入彈框代碼來實現(xiàn)代碼運行暫停效果方案只能讓已運行的Python代碼先停止運行,然后用戶手動修改代碼向新發(fā)現(xiàn)的可疑位置插入彈框代碼然后再重新運行修改后的Python代碼等待代碼運行到可疑位置處暫停。這種做法對于用戶操作極其不便,需要用戶頻繁的修改Python代碼、停止代碼運行、重新讓代碼運行、等待代碼運行暫停。
技術(shù)實現(xiàn)思路
有鑒于此,本專利技術(shù)提供一種代碼調(diào)試方法及裝置,主要目的在于簡化Python代碼的調(diào)試過程,通過在調(diào)試過程中實時調(diào)整代碼中的斷點位置來快速確定問題代碼的位置,從而提升Python代碼的調(diào)試效率。為達到上述目的,本專利技術(shù)主要提供如下技術(shù)方案:一方面,本專利技術(shù)提供了一種代碼調(diào)試方法,該方法包括:獲取用戶在代碼中設(shè)置的斷點行號,得到斷點集合;根據(jù)所述代碼執(zhí)行的當(dāng)前行號,判斷所述當(dāng)前行號是否在所述斷點集合中;若存在,則執(zhí)行中斷事件函數(shù),以中斷所述代碼的執(zhí)行。另一方面,本專利技術(shù)還提供了一種代碼調(diào)試裝置,該裝置包括:獲取單元,用于獲取用戶在代碼中設(shè)置的斷點行號,得到斷點集合;判斷單元,用于根據(jù)所述代碼執(zhí)行的當(dāng)前行號,判斷所述當(dāng)前行號是否在所述獲取單元得到的斷點集合中;執(zhí)行單元,用于當(dāng)所述判斷單元判斷所述當(dāng)前行號為所述斷點行號時,執(zhí)行中斷事件函數(shù),以中斷所述代碼的執(zhí)行。依據(jù)上述本專利技術(shù)所提出的代碼調(diào)試方法及裝置,只需要用戶確定需要暫停調(diào)試的代碼行位置,代碼程序在執(zhí)行時就能夠自動的識別出用戶所選擇的暫停位置,并將代碼程序停止在該位置上,等待用戶的下一步指示,在接收到用戶取消暫停的指令后,恢復(fù)代碼程序的執(zhí)行,直至運行至下一個調(diào)試斷點代碼行。由于本專利技術(shù)所采用的方法是實時地更新斷點集合中的斷點行號,因此,能夠在代碼程序的執(zhí)行過程中隨時的添加或刪除用戶所需的斷點,為代碼程序的調(diào)試提供了更加靈活的調(diào)試方式。相對于現(xiàn)有的代碼程序調(diào)試方式,本專利技術(shù)不需要用戶進行頻繁的修改代碼,設(shè)置插入彈框來暫停代碼程序的執(zhí)行,而是由用戶在代碼的調(diào)試過程中動態(tài)的選擇需要暫停的位置,并在用戶的控制下恢復(fù)代碼的運行狀態(tài)。因此,本專利技術(shù)所采用的代碼調(diào)試方法及裝置能夠更快速的確定問題代碼的位置,從而提升Python代碼的調(diào)試效率。附圖說明通過閱讀下文優(yōu)選實施方式的詳細描述,各種其他的優(yōu)點和益處對于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實施方式的目的,而并不認為是對本專利技術(shù)的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中:圖1示出了本專利技術(shù)實施例提出的一種代碼調(diào)試方法的流程圖;圖2示出了本專利技術(shù)實施例提出的另一種代碼調(diào)試方法的流程圖;圖3示出了本專利技術(shù)實施例提出的一種代碼調(diào)試裝置的組成框圖;圖4示出了本專利技術(shù)實施例提出的另一種代碼調(diào)試裝置的組成框圖。具體實施方式下面將參照附圖更詳細地描述本專利技術(shù)的示例性實施例。雖然附圖中顯示了本專利技術(shù)的示例性實施例,然而應(yīng)當(dāng)理解,可以以各種形式實現(xiàn)本專利技術(shù)而不應(yīng)被這里闡述的實施例所限制。相反,提供這些實施例是為了能夠更透徹地理解本專利技術(shù),并且能夠?qū)⒈緦@夹g(shù)的范圍完整的傳達給本領(lǐng)域的技術(shù)人員。本專利技術(shù)實施例提供了一種代碼調(diào)試的方法,如圖1所示,該方法應(yīng)用于中斷停代碼執(zhí)行的代碼調(diào)試過程,具體步驟包括:101、獲取用戶在代碼中設(shè)置的斷點行號,得到斷點集合。針對現(xiàn)有的調(diào)試方式的不足,本專利技術(shù)實施例通過獲取用戶設(shè)置的斷點位置來確定代碼在執(zhí)行時需要暫停的代碼行,并將這些代碼行號組成斷點集合。對于用戶設(shè)置的斷點位置,是由用戶通過鼠標(biāo)或者是通過觸屏在代碼編輯器中選擇代碼中需要暫停的位置,該位置可以是一個,也可以為多個。并且,用戶在選擇斷點位置時,對于代碼的當(dāng)前狀態(tài)沒有限定,可以是在執(zhí)行前,提前確定所有斷點的位置,也可以是在代碼的執(zhí)行過程中,實時地確定斷點的位置。需要說明的是,在代碼執(zhí)行過程中,用戶只能設(shè)置在當(dāng)前執(zhí)行行號之后的代碼行行號為斷點位置。不僅如此,用戶在設(shè)置斷點位置的過程中,還包括對代碼中增加斷點和刪除已有斷點兩種設(shè)置,增加斷點如上所述,可以在代碼中的任意位置設(shè)置斷點,而刪除斷點則是在當(dāng)前標(biāo)有斷點的代碼中再次選擇標(biāo)有斷點的代碼行來取消在該代碼行的中斷標(biāo)記。斷點集合中記錄了針對該代碼的所有用戶標(biāo)記中斷的代碼行號,并且該集合中的斷點行號是實時更新的。根據(jù)用戶的選擇,集合會對其中的斷點行號時刻更新,增加新的斷點或刪除已有的斷點。102、根據(jù)代碼執(zhí)行的當(dāng)前行號,判斷該行號是否在斷點集合中。在創(chuàng)建了斷點集合后,在進行代碼調(diào)試時,該代碼在每執(zhí)行一行代碼時,都會將該代碼行的行號與斷點集合中的斷點行號進行比對,以判斷該行代碼在執(zhí)行后是否需要暫停。對于代碼在執(zhí)行過程中獲取代碼執(zhí)行的當(dāng)前行號的方式本實施例不做具體限定,較簡單的方式是在每一行原代碼后增加一句調(diào)用中斷事件函數(shù)代碼,通過在該調(diào)用函數(shù)中內(nèi)置計數(shù)器來統(tǒng)計代碼執(zhí)行的行數(shù),將計數(shù)器的初始值設(shè)置為1,每調(diào)用一次該函數(shù)就在該計數(shù)器中加1,通過讀取計算器的值就可確定代碼執(zhí)行的當(dāng)前行號。在確定了代碼執(zhí)行的當(dāng)前行號后,將該當(dāng)前行號帶入到斷點集合中遍歷進行匹配,如果該行號存在與該集合中,就執(zhí)行該中斷事件函數(shù),將代碼的執(zhí)行狀態(tài)暫停在當(dāng)前行;而如果該行號不存在與該集合中,就跳過該中斷事件函數(shù)繼續(xù)執(zhí)行代碼的下一行。103、若當(dāng)前行號為斷點行號,則執(zhí)行中斷事件函數(shù)。當(dāng)確定代碼的當(dāng)前行號為斷點行號后,代碼程序?qū)?zhí)行所調(diào)用的中斷事件函數(shù),將代碼的執(zhí)行狀態(tài)暫停在當(dāng)前行。該中斷事件函數(shù)的具體實現(xiàn)方式可以是一個有條件的循環(huán)函數(shù),也可以是本文檔來自技高網(wǎng)...

【技術(shù)保護點】
一種代碼調(diào)試方法,其特征在于,所述方法包括:獲取用戶在代碼中設(shè)置的斷點行號,得到斷點集合;根據(jù)所述代碼執(zhí)行的當(dāng)前行號,判斷所述當(dāng)前行號是否在所述斷點集合中;若存在,則執(zhí)行中斷事件函數(shù),以中斷所述代碼的執(zhí)行。
【技術(shù)特征摘要】
1.一種代碼調(diào)試方法,其特征在于,所述方法包括:獲取用戶在代碼中設(shè)置的斷點行號,得到斷點集合;根據(jù)所述代碼執(zhí)行的當(dāng)前行號,判斷所述當(dāng)前行號是否在所述斷點集合中;若存在,則執(zhí)行中斷事件函數(shù),以中斷所述代碼的執(zhí)行。2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述獲取用戶在代碼中設(shè)置的斷點行號,得到斷點集合包括:創(chuàng)建斷點集合,所述斷點集合中記錄有用戶在代碼中設(shè)置的斷點行號;獲取用戶選擇設(shè)置斷點位置所在的代碼行號;將所述代碼行號添加到所述斷點集合中;當(dāng)所述代碼行號已存在于所述斷點集合中時,在所述斷點集合中刪除所述代碼行號。3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述根據(jù)所述代碼執(zhí)行的當(dāng)前行號,判斷所述當(dāng)前行號是否在所述斷點集合中包括:根據(jù)在所述代碼每一行之后添加的中斷代碼調(diào)用所述中斷代碼中的中斷事件函數(shù);在執(zhí)行所述中斷事件函數(shù)時,判斷所述代碼執(zhí)行的當(dāng)前行號是否在所述斷點集合中。4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述判斷所述代碼執(zhí)行的當(dāng)前行號是否在所述斷點集合中包括:設(shè)置行號計數(shù)器,設(shè)置初始值為1;在所述代碼執(zhí)行時,每調(diào)用一次所述中斷事件函數(shù),則為所述計數(shù)器的值加1,得到所述代碼執(zhí)行的當(dāng)前行號;遍歷所述斷點集合中的斷點行號,判斷所述當(dāng)前行號是否為斷點行號。5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述執(zhí)行中斷...
【專利技術(shù)屬性】
技術(shù)研發(fā)人員:程水強,
申請(專利權(quán))人:北京國雙科技有限公司,
類型:發(fā)明
國別省市:北京,11
還沒有人留言評論。發(fā)表了對其他瀏覽者有用的留言會獲得科技券。