TW201931108A - 支援多執行緒/並行程式除錯之方法、電腦可讀取之記錄媒體及電腦程式產品 - Google Patents

支援多執行緒/並行程式除錯之方法、電腦可讀取之記錄媒體及電腦程式產品 Download PDF

Info

Publication number
TW201931108A
TW201931108A TW107100710A TW107100710A TW201931108A TW 201931108 A TW201931108 A TW 201931108A TW 107100710 A TW107100710 A TW 107100710A TW 107100710 A TW107100710 A TW 107100710A TW 201931108 A TW201931108 A TW 201931108A
Authority
TW
Taiwan
Prior art keywords
program
thread
execution
computer system
computer
Prior art date
Application number
TW107100710A
Other languages
English (en)
Other versions
TWI659361B (zh
Inventor
鄭永斌
楊權
Original Assignee
國立中央大學
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 國立中央大學 filed Critical 國立中央大學
Priority to TW107100710A priority Critical patent/TWI659361B/zh
Priority to US16/243,791 priority patent/US10649883B2/en
Application granted granted Critical
Publication of TWI659361B publication Critical patent/TWI659361B/zh
Publication of TW201931108A publication Critical patent/TW201931108A/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3632Software debugging of specific synchronisation aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores

Abstract

一種支援多執行緒/並行程式除錯之方法,該方法包括下列步驟:設定在多執行緒之程式區段之中斷點;將中斷點轉換為執行環境轉換點;執行交錯執行路徑所規劃執行順序,以啟動指定之一個執行緒來執行其之程式區段直到第一執行環境轉換點;逐一點選交錯執行路徑之次一執行緒,執行所逐一點選之次一執行緒直到次一執行環境轉換點;以及記錄及儲存該交錯執行路徑。

Description

支援多執行緒/並行程式除錯之方法、電腦可讀取之記錄媒體及電腦程式產品
本發明有關於電腦系統之領域,特別有關於一種支援多執行緒/並行程式除錯之方法、電腦可讀取之記錄媒體及電腦程式產品。
執行緒(thread)是作業系統能夠進行運算行程(process)的最小單位,其被包含在行程之中,是行程中的實際運算單位。一條執行緒指的是行程中一個單一順序的控制流,一個行程中可以並行多個執行緒,每條執行緒並列執行不同的任務。
多執行緒(multithreading)是指從軟體或硬體上實現多個執行緒並行執行的技術。具有多執行緒能力的電腦因有硬體支援而能夠在同一時間執行多於一個執行緒,進而提升整體處理效能。具有這種能力的系統包括對稱多處理器、多核心處理器以及晶片級多執行緒(chip-level multithreading)或同時多執行緒(simultaneous multithreading)處理器。
現在的軟體系統通常會引進多執行緒、並行程式(concurrent/parallel programming)設計等新技術。但是系統一旦使用這項技術,系統所有可能的執行路徑會以指數成長的方式大量的擴張,這使得找出並行錯誤(concurrent error)更加的困難。
並行錯誤通常是惡名昭彰的難以發現與除錯,現有的多執行緒或並行程式的除錯與測試幾乎沒有比較有效的方法,也就是只能盡可能執行更多的可能程式路徑,至少先能夠測試出錯誤的存在。然而在進行多執行緒或並行程式的除錯時,作業系統排程無法由程式設計師控制,亦即程式設計師並無法控制執行緒之執行路徑以及執行環境切換,因此在除錯時作業系統控制是哪一條執行緒執行待除錯程式之哪個執行緒程式區段,程式設計師是無法得知,即使發現出待除錯程式之錯誤存在,要將多執行緒之執行路徑的重現是非常不容易,也增加程式除錯的困難性。
有鑑於上述問題,本發明之目的在於提供一種支援多執行緒/並行程式除錯之方法、電腦可讀取之記錄媒體及電腦程式產品,其在除錯器中以中止作業系統排程,並提供新型中斷點-執行環境轉換點來控制交錯執行路徑,按照所規劃執行順序之每一執行緒之每一程式區段,可輕易重現多執行緒之執行路徑,而輕鬆地達成程式除錯的目的。
本發明之第一態樣係提供一種支援多執行緒/並行程式除錯之方法,應用於多核心或多中央處理單元之電腦系統,為多執行緒之一待除錯程式在每一執行緒具有複數個程式區段,規劃每一執行緒之每一程式區段的執行順序以構成一交錯執行路徑,該方法包括下列步驟: 在該電腦系統之一螢幕所顯示之一程式除錯畫面中設定在該多執行緒之該等程式區段之複數個中斷點; 在該螢幕所顯示之該程式除錯畫面中之一中斷點面板視窗中將該等中斷點轉換為複數個執行環境轉換點; 由該電腦系統執行該交錯執行路徑所規劃執行順序,以啟動指定之一個執行緒來執行其之一程式區段直到一第一執行環境轉換點; 在該螢幕所顯示之該程式除錯畫面中之一執行緒控制面板視窗中逐一點選該交錯執行路徑之一次一執行緒,由該電腦系統執行所逐一點選之該次一執行緒直到一次一執行環境轉換點;以及 記錄及儲存由該電腦系統執行該交錯執行路徑。
本發明之第二態樣提供一種內儲一程式之電腦可讀取之記錄媒體,當一電腦系統於該電腦可讀取之記錄媒體載入該程式並執行後,可完成本發明第一態樣之方法。
本發明之第三態樣提供一種內儲一程式之電腦程式產品,當一電腦系統於該電腦程式產品載入該程式並執行後,可完成本發明第一態樣之方法。
為使熟習本發明所屬技術領域之一般技藝者能更進一步了解本發明,下文特列舉本發明之較佳實施例,並配合所附圖式,詳細說明本發明的構成內容及所欲達成之功效。
本發明之支援多執行緒/並行程式除錯之方法是應用於多核心或多中央處理單元之電腦系統(未繪示),電腦系統還包括記憶體、匯流排、輸出入裝置及螢幕等習知之硬體架構,在此不多加贅述。可採用多執行緒/並行程式之智慧型裝置(如平板電腦、智慧型手機或智慧型手錶)亦可應用本發明之支援多執行緒/並行程式除錯之方法。
圖1為本發明之支援多執行緒/並行程式除錯之方法之流程圖。在圖1中,在對為多執行緒之待除錯程式進行除錯或測試時,程式設計師將待除錯程式之每一執行緒分成複數個程式區段,規劃每一執行緒的每一程式區段之不同的執行順序以構成複數個交錯(interleaving)執行路徑,並且儘可能執行更多的交錯執行路徑,以測試出待除錯程式之錯誤的存在(步驟S10)。
電腦系統載入已規劃一交錯執行路徑之待除錯程式,並將待除錯程式顯示在電腦系統之螢幕所顯示之一程式除錯畫面中,如圖2為本發明之程式除錯畫面之示意圖所示。
程式設計師在程式除錯畫面中之交錯執行路徑所規劃執行順序之該多執行緒之該等程式區段設定複數個中斷點(步驟S12),如圖2中所標示。
藉由程式除錯畫面所支援之除錯程式是由作業系統排程控制程式計數與執行緒之執行路徑,程式設計師無法控制在程式進行除錯時對交錯執行路徑所規劃執行順序,因此本發明之一除錯程式用以中止作業系統排程,不再由作業系統排程所控制之程式計數與執行緒之執行路徑進行程式除錯,而由本發明之除錯程式依據虛擬排程(即交錯執行路徑所規劃執行順序)進行程式除錯。
當執行本發明之除錯程式時,在程式除錯畫面顯示一Breakpoint Panel(中斷點面板)視窗(如圖2所示),程式設計師可以在Breakpoint Panel視窗之「CS」欄位下點選待除錯程式所設定之中斷點以轉換成執行環境轉換點(步驟S14)。
接著,在程式除錯畫面中點選「開始」之選項,由電腦系統執行交錯執行路徑所規劃執行順序,以啟動指定之第一執行緒來執行其之第一程式區段,直到執行到第一執行環境轉換點而暫停(步驟S16)。記錄與儲存此次執行之交錯執行路徑之第一執行緒。
此時,在程式除錯畫面顯示一執行緒控制面板(Thread Control Panel)視窗,如圖3為本發明之程式除錯畫面中顯示有執行緒控制面板視窗之示意圖所示,在執行緒控制面板視窗中顯示可選擇執行之執行緒(如圖3之執行緒控制面板視窗中之第1行之Name: prgrm.cs:16, Status:Ready,Position:program.cs:27)。
在電腦系統執行到第一執行環境轉換點之後,在執行緒控制面板視窗中點選次一執行緒(如圖3之執行緒控制面板視窗中之第2行之Name:prgrm.cs:26, Status:Ready, Position: program.cs: 26),由電腦系統執行次一執行緒之次一程式區段,直到執行到所設定之次一執行環境轉換點而暫停。其中次一執行緒係與一前一執行緒相同或不同。記錄與儲存此次執行之交錯執行路徑之次一執行緒。
逐一的執行前述之程序,在電腦系統執行到執行環境轉換點之後,在執行緒控制面板視窗中點選交錯執行路徑所規劃執行順序之次一執行緒,由電腦系統執行該次一執行緒,且記錄與儲存逐一執行之交錯執行路徑之次一執行緒,直到待除錯程式之除錯程序執行結束(步驟S18)。
圖4為本發明之程式除錯畫面中顯示有交錯控制面板視窗之示意圖。電腦系統執行交錯執行路徑時,會逐一記錄及儲存如圖4之電腦系統所執行之交錯執行路徑之每一執行緒(如交錯控制面板視窗中之第1行之Name:prgrm.cs:16, Execute from:Program.cs:26, Execute to:program.cs: 27) (步驟S20)。由程式除錯畫面中之交錯控制面板視窗顯示多執行緒之方式由電腦系統執行交錯執行路徑之每一執行緒之每一程式區段,以供程式設計師檢查待除錯程式是否存在錯誤,亦即,程式設計師欲對存在錯誤之待除錯程式進行除錯,重現逐一記錄及儲存由電腦系統所執行之交錯執行路徑之每一執行緒,並對執行緒重新設定中斷點及轉換執行環境轉換點,以找出待除錯程式存在錯誤之處。
本發明之上述支援多執行緒/並行程式除錯之方法可以一程式型態來完成,並可將該程式儲存於一電腦可讀取之記錄媒體,當自動化測試系統於該電腦可讀取之記錄媒體載入該程式並執行後,便可完成如上述說明及圖式中所示之方法步驟。
同樣地,本發明之上述支援多執行緒/並行程式除錯之方法可以一電腦程式產品來完成,當電腦系統例如從網路下載該電腦程式並執行後,便可完成如上述說明及圖式中所示之方法步驟。
本發明係提供一種支援多執行緒/並行程式除錯之方法、電腦可讀取之記錄媒體及電腦程式產品,其在除錯器中以中止作業系統排程,並提供新型中斷點-執行環境轉換點來控制交錯執行路徑,按照所規劃執行順序之每一執行緒之每一程式區段,可輕易重現多執行緒之執行路徑,而輕鬆地達成程式除錯的目的。
雖然本發明已參照較佳具體例及舉例性附圖敘述如上,惟其應不被視為係限制性者。熟悉本技藝者對其形態及具體例之內容做各種修改、省略及變化,均不離開本發明之申請專利範圍之所主張範圍。
圖1為本發明之支援多執行緒/並行程式除錯之方法之流程圖; 圖2為本發明之程式除錯畫面之示意圖; 圖3為本發明之程式除錯畫面中顯示有執行緒控制面板視窗之示意圖;以及 圖4為本發明之程式除錯畫面中顯示有交錯控制面板視窗之示意圖。

Claims (4)

  1. 一種支援多執行緒/並行程式除錯之方法,應用於多核心或多中央處理單元之電腦系統,為多執行緒之一待除錯程式在每一執行緒具有複數個程式區段,規劃每一執行緒之每一程式區段的執行順序以構成一交錯執行路徑,該方法包括下列步驟: 在該電腦系統之一螢幕所顯示之一程式除錯畫面中設定在該多執行緒之該等程式區段之複數個中斷點; 在該螢幕所顯示之該程式除錯畫面中之一中斷點面板視窗中將該等中斷點轉換為複數個執行環境轉換點; 由該電腦系統執行該交錯執行路徑所規劃執行順序,以啟動指定之一個執行緒來執行其之一程式區段直到一第一執行環境轉換點相應之程式位址; 在該螢幕所顯示之該程式除錯畫面中之一執行緒控制面板視窗中逐一點選該交錯執行路徑之一次一執行緒,由該電腦系統執行所逐一點選之該次一執行緒直到一次一執行環境轉換點;以及 記錄及儲存由該電腦系統執行該交錯執行路徑。
  2. 如請求項1之方法,其中,在該執行緒控制面板視窗中逐一點選該交錯執行路徑所規劃執行順序之該次一執行緒並該電腦系統執行所逐一點選之該次一執行緒直到該待除錯程式執行結束。
  3. 一種內儲一程式之電腦可讀取之記錄媒體,當一電腦系統於該電腦可讀取之記錄媒體載入該程式並執行後,可完成請求項1或2之方法。
  4. 一種內儲一程式之電腦程式產品,當一電腦系統於電腦程式產品載入該程式並執行後,可完成請求項1或2之方法。
TW107100710A 2018-01-09 2018-01-09 支援多執行緒/並行程式除錯之方法、電腦可讀取之記錄媒體及電腦程式產品 TWI659361B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
TW107100710A TWI659361B (zh) 2018-01-09 2018-01-09 支援多執行緒/並行程式除錯之方法、電腦可讀取之記錄媒體及電腦程式產品
US16/243,791 US10649883B2 (en) 2018-01-09 2019-01-09 Method that supports multithreading/concurrent programming debugging, computer readable recording medium and computer program product

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
TW107100710A TWI659361B (zh) 2018-01-09 2018-01-09 支援多執行緒/並行程式除錯之方法、電腦可讀取之記錄媒體及電腦程式產品

Publications (2)

Publication Number Publication Date
TWI659361B TWI659361B (zh) 2019-05-11
TW201931108A true TW201931108A (zh) 2019-08-01

Family

ID=67140912

Family Applications (1)

Application Number Title Priority Date Filing Date
TW107100710A TWI659361B (zh) 2018-01-09 2018-01-09 支援多執行緒/並行程式除錯之方法、電腦可讀取之記錄媒體及電腦程式產品

Country Status (2)

Country Link
US (1) US10649883B2 (zh)
TW (1) TWI659361B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11422920B2 (en) 2020-03-12 2022-08-23 Micro Focus Llc Debugging multiple instances of code using thread patterns
CN111400196A (zh) * 2020-04-28 2020-07-10 上海众言网络科技有限公司 基于测试环境进行项目信息切换的方法和装置

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7383539B2 (en) * 2003-09-18 2008-06-03 International Business Machines Corporation Managing breakpoints in a multi-threaded environment
US7222264B2 (en) * 2004-03-19 2007-05-22 Intel Corporation Debug system and method having simultaneous breakpoint setting
CN101295279B (zh) * 2007-04-29 2012-05-09 国际商业机器公司 多线程环境下的调试程序的方法和系统
US8261047B2 (en) * 2008-03-17 2012-09-04 Freescale Semiconductor, Inc. Qualification of conditional debug instructions based on address
US9395983B2 (en) * 2008-08-20 2016-07-19 Freescale Semiconductor, Inc. Debug instruction for execution by a first thread to generate a debug event in a second thread to cause a halting operation
US8327336B2 (en) * 2009-03-18 2012-12-04 International Business Machines Corporation Enhanced thread stepping
GB2483907A (en) * 2010-09-24 2012-03-28 Advanced Risc Mach Ltd Privilege level switching for data processing circuitry when in a debug mode
US8572573B2 (en) * 2012-03-09 2013-10-29 Nvidia Corporation Methods and apparatus for interactive debugging on a non-preemptible graphics processing unit
US9262299B1 (en) * 2013-05-31 2016-02-16 Cadence Design Systems, Inc. Simulation observability and control of all hardware and software components of a virtual platform model of an electronics system
US9292413B2 (en) * 2013-08-13 2016-03-22 International Business Machines Corporation Setting breakpoints in a code debugger used with a GUI object

Also Published As

Publication number Publication date
TWI659361B (zh) 2019-05-11
US10649883B2 (en) 2020-05-12
US20190213108A1 (en) 2019-07-11

Similar Documents

Publication Publication Date Title
US8327336B2 (en) Enhanced thread stepping
US20140282415A1 (en) Method and system for debugging a program
US9239773B1 (en) Method and system for debugging a program that includes declarative code and procedural code
US8813035B2 (en) Paradigm for concurrency testcase generation
US8418149B2 (en) Differential comparison system and method
US20110072309A1 (en) Debugger for Multicore System
US10613964B2 (en) Conditional debugging of server-side production code
US20120102469A1 (en) Deterministic application breakpoint halting by logically relating breakpoints in a graph
US11416258B2 (en) Method of debugging a processor that executes vertices of an application, each vertex being assigned to a programming thread of the processor
US8418148B2 (en) Thread execution analyzer
Ramakrishnan et al. Experiences with user-centered design for the Tigres workflow API
US20140033181A1 (en) Reverse debugging
TWI488120B (zh) 用於進行除錯式交易的方法及電腦可讀取儲存媒體
US20140215483A1 (en) Resource-usage totalizing method, and resource-usage totalizing device
Drebes et al. Aftermath: A graphical tool for performance analysis and debugging of fine-grained task-parallel programs and run-time systems
TW201931108A (zh) 支援多執行緒/並行程式除錯之方法、電腦可讀取之記錄媒體及電腦程式產品
US20130074042A1 (en) Visualizing thread state during program debugging
EP2630577B1 (en) Exception control in a multiprocessor system
US9471456B2 (en) Interleaved instruction debugger
Lee et al. Replay debugging for multi-threaded embedded software
US20170192878A1 (en) Separating Test Coverage In Software Processes Using Shared Memory
US11061801B1 (en) Data logger for a real-time robotic control system
JP4997144B2 (ja) マルチタスク処理装置およびその方法
US20160299786A1 (en) Code examination by scheduler timeline manipulation
US9262302B2 (en) Displaying values of variables in a first thread modified by another thread