本申請涉及數(shù)據(jù)處理,具體而言,涉及一種程序斷點的設(shè)置方法和裝置、存儲介質(zhì)及電子設(shè)備。
背景技術(shù):
1、可編程邏輯控制器(programmable?logic?controller,簡稱為plc)廣泛應(yīng)用于工業(yè)自動化領(lǐng)域,是企業(yè)生產(chǎn)自動化運行的關(guān)鍵設(shè)備。斷點調(diào)試功能是plc的輔助調(diào)試功能,主要用于幫助用于排查plc用戶程序的邏輯錯誤。
2、但微內(nèi)核操作系統(tǒng)只提供線程管理、進程間通信、虛擬內(nèi)存空間、句柄空間、設(shè)備基礎(chǔ)單元(中斷對象)五項功能,無其它功能,因此,基于微內(nèi)核操作系統(tǒng)的plc無法提供斷點調(diào)試功能,這給上層功能開發(fā)帶來了很多難點。
3、針對相關(guān)技術(shù)中,plc無法實現(xiàn)斷點調(diào)試功能的問題,目前尚未提出有效的解決方案。
技術(shù)實現(xiàn)思路
1、本申請實施例提供了一種程序斷點的設(shè)置方法和裝置、存儲介質(zhì)及電子設(shè)備,以至少解決plc無法實現(xiàn)斷點調(diào)試功能的問題。
2、根據(jù)本申請實施例的一個實施例,提供了一種程序斷點的設(shè)置方法,包括:在通過可編程邏輯控制器plc的通訊處理線程獲取到plc編程軟件發(fā)送的控制指令的情況下,確定所述控制指令的指令類型;在所述指令類型用于指示所述控制指令為設(shè)置斷點指令的情況下,從所述控制指令中確定待設(shè)置的第一斷點地址;將目標代碼區(qū)中所述第一斷點地址上的指令設(shè)置為斷點bkpt指令,其中,所述目標代碼區(qū)中的指令集合構(gòu)成目標程序。
3、在一個示例性的實施例中,將目標代碼區(qū)中所述第一斷點地址上的指令設(shè)置為斷點bkpt指令,包括:掛起所述plc中的目標運行線程,其中,所述目標運行線程用于執(zhí)行所述目標程序;在所述目標代碼區(qū)中所述第一斷點地址上的指令為nop指令的情況下,將所述第一斷點地址上的所述nop指令替換為所述bkpt指令,并恢復(fù)所述目標運行線程的運行。
4、在一個示例性的實施例中,將目標代碼區(qū)中所述第一斷點地址上的指令設(shè)置為斷點bkpt指令之后,所述方法還包括:獲取目標程序的當前斷點地址;將所述當前斷點地址設(shè)置在狀態(tài)查詢包中,并通過所述通訊處理線程將攜帶所述當前斷點地址的狀態(tài)查詢包發(fā)送至所述plc編程軟件,其中,所述狀態(tài)查詢包用于向所述plc編程軟件通告所述plc的運行狀態(tài)。
5、在一個示例性的實施例中,獲取目標程序的當前斷點地址,包括:確定目標運行線程是否處于掛起狀態(tài),其中,所述目標運行線程用于執(zhí)行所述目標代碼區(qū)中的指令;在所述目標運行線程處于掛起狀態(tài)的情況下,將所述當前斷點地址設(shè)置為所述目標運行線程的程序計數(shù)器pc地址;在所述目標運行線程未處于掛起狀態(tài)的情況下,將所述當前斷點地址設(shè)置為預(yù)設(shè)地址。
6、在一個示例性的實施例中,確定所述控制指令的指令類型之后,所述方法還包括:在所述控制指令為跳過當前斷點指令的情況下,從所述跳過當前斷點指令中確定待跳過的第二斷點地址;在所述目標代碼區(qū)中所述第二斷點地址上的指令為所述bkpt指令、且所述目標運行線程的pc地址為所述第二斷點地址的情況下,將所述目標運行線程的pc地址設(shè)置為指定地址,其中,所述指定地址等于所述第二斷點地址加上預(yù)設(shè)偏移量,所述目標運行線程用于執(zhí)行所述目標代碼區(qū)中的指令。
7、在一個示例性的實施例中,確定所述控制指令的指令類型之后,所述方法還包括:在所述控制指令為刪除斷點指令的情況下,從所述刪除斷點指令中確定待刪除的第三斷點地址;掛起所述plc中的目標運行線程,其中,所述目標運行線程用于執(zhí)行所述目標程序;在所述目標代碼區(qū)中所述第三斷點地址上的指令為所述bkpt指令的情況下,將所述第三斷點地址上的所述bkpt指令替換為nop指令,并恢復(fù)所述目標運行線程的運行。
8、在一個示例性的實施例中,在獲取到plc編程軟件發(fā)送的控制指令之前,所述方法還包括:獲取所述plc編程軟件發(fā)送的匯編代碼,其中,所述匯編代碼中的每一個匯編代碼塊的尾部具有nop指令;將所述匯編代碼存儲至所述目標代碼區(qū)。
9、根據(jù)本申請實施例的另一個實施例,還提供了一種程序斷點的設(shè)置裝置,包括:第一確定模塊,用于在通過可編程邏輯控制器plc的通訊處理線程獲取到plc編程軟件發(fā)送的控制指令的情況下,確定所述控制指令的指令類型;第二確定模塊,用于在所述指令類型用于指示所述控制指令為設(shè)置斷點指令的情況下,從所述設(shè)置斷點指令中確定待設(shè)置的第一斷點地址;設(shè)置模塊,用于將目標代碼區(qū)中所述第一斷點地址上的指令設(shè)置為斷點bkpt指令,其中,所述目標代碼區(qū)中的指令集合構(gòu)成目標程序。
10、根據(jù)本申請實施例的又一方面,還提供了一種計算機可讀的存儲介質(zhì),該計算機可讀的存儲介質(zhì)中存儲有計算機程序,其中,該計算機程序被設(shè)置為運行時執(zhí)行上述程序斷點的設(shè)置方法。
11、根據(jù)本申請實施例的又一方面,還提供了一種電子裝置,包括存儲器、處理器及存儲在存儲器上并可在處理器上運行的計算機程序,其中,上述處理器通過計算機程序執(zhí)行上述的程序斷點的設(shè)置方法。
12、在本申請實施例中,在plc的通訊處理線程獲取到plc編程軟件發(fā)送的用于設(shè)置斷點的控制指令的情況下,從控制指令中確定待設(shè)置的第一斷點地址,并將目標代碼區(qū)中第一斷點地址上的指令設(shè)置為斷點bkpt指令,其中,目標代碼區(qū)中的指令集合構(gòu)成目標程序,進而使得目標程序在運行到第一斷點地址上的指令時,觸發(fā)cpu進入異常,暫停目標程序運行,進而采用上述技術(shù)方案,解決了plc無法實現(xiàn)斷點調(diào)試功能的問題,達到了可以實現(xiàn)plc的斷點調(diào)試功能的技術(shù)效果。
1.一種程序斷點的設(shè)置方法,其特征在于,包括:
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,將目標代碼區(qū)中所述第一斷點地址上的指令設(shè)置為斷點bkpt指令,包括:
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,將目標代碼區(qū)中所述第一斷點地址上的指令設(shè)置為斷點bkpt指令之后,所述方法還包括:
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,獲取目標程序的當前斷點地址,包括:
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,確定所述控制指令的指令類型之后,所述方法還包括:
6.根據(jù)權(quán)利要求1所述的方法,其特征在于,確定所述控制指令的指令類型之后,所述方法還包括:
7.根據(jù)權(quán)利要求1至6中任一項所述的方法,其特征在于,在獲取到plc編程軟件發(fā)送的控制指令之前,所述方法還包括:
8.一種程序斷點的設(shè)置裝置,其特征在于,包括:
9.一種計算機可讀的存儲介質(zhì),其特征在于,所述計算機可讀的存儲介質(zhì)包括存儲的程序,其中,所述程序運行時執(zhí)行上述權(quán)利要求1至7任一項中所述的方法。
10.一種電子裝置,包括存儲器和處理器,其特征在于,所述存儲器中存儲有計算機程序,所述處理器被設(shè)置為通過所述計算機程序執(zhí)行所述權(quán)利要求1至7任一項中所述的方法。