§ 瀏覽學位論文書目資料
  
系統識別號 U0002-0403201014421000
DOI 10.6846/TKU.2010.00077
論文名稱(中文) Java的靈活多緒除錯器
論文名稱(英文) A Multi-Thread Flexible Debugger for Java
第三語言論文名稱
校院名稱 淡江大學
系所名稱(中文) 資訊管理學系碩士班
系所名稱(英文) Department of Information Management
外國學位學校名稱
外國學位學院名稱
外國學位研究所名稱
學年度 98
學期 1
出版年 99
研究生(中文) 劉妍君
研究生(英文) Yen-Chun Liu
學號 696630028
學位類別 碩士
語言別 繁體中文
第二語言別
口試日期 2010-01-09
論文頁數 76頁
口試委員 指導教授 - 廖賀田(htliaw@mail.tku.edu.tw)
委員 - 張昭憲
委員 - 莊庭瑞
委員 - 王建民
關鍵字(中) Java
除錯器
開架式介面
語法單元
除錯步伐
關鍵字(英) Java
Debugger
Open-Access
SyntaxUnit
DebuggingPace
第三語言關鍵字
學科別分類
中文摘要
在程式的開發環境下,程式員依照規格書寫好主題程式後就會進行測試,如果測試的結果與規格書所載不符時就得進行除錯(debug)。市面上的整合型開發環境(IDE)都內建普通除錯器,普通除錯器是以原始碼的行(line)作為基本除錯單位,因此當錯誤發生在比較複雜的算式之內時,普通除錯器就難以滿足需求。另外除錯器是按照既定的程式流程執行,程式員不能臨時呼叫其他副程式進行測試,只能反覆脫離除錯器以便修改測試原始碼。

本論文提出一個Java的多緒靈活除錯器,內建開架式介面。它以語法樹的語法單元作為基本除錯單位,程式員可以逐語法單元評估每一步的執行結果,還可以自行調整下一步除錯所需的步伐(pace)大小。當主題程式中斷執行時,開架式介面可以支援程式員直接取用執行期的物件資料,或是當下呼叫另外一個副程式。為了確保主題程式可以從中斷狀態恢復執行,程式員所寫的測試碼都以新建的執行緒執行。本系統還提供管理多緒程式的功能,程式員可以利用本系統來對多緒程式進行除錯。
英文摘要
In a program development environment, programmer will test main program after implementation. A debugging process is involved if the test result does not meet the specification. Popular Integrated Development Environment (IDE) normally build-in a common debugger which debugging unit is a line. When program error occurs in a complex expression, the common debugger is hard to meet programmer’s expectation when debugging. The debugger executes code follow by the control flow that is written, the programmer is unable to invoke another testing method while debugging. They have to repeatedly exit executing program, then modify testing code, and run it again.

This master thesis proposed a Multi-Thread Flexible Debugger for Java, which build-in Open-Access Interface, and use syntax unit as its debugging unit. Programmer now can execute every single syntax unit, and watch the result. The size of next debugging pace can be adjusted. An Open-Access Interface helps programmer access object data or executes testing codes in the runtime. In order to guarantee the program can be resumed from suspend, all testing code are executed by another new thread, which is managed by multi-thread managing mechanism.
第三語言摘要
論文目次
目錄	III
圖目錄	IV
表目錄	V
第壹章 緒論	1
1.1 研究動機與目的	1
1.2 論文組織與架構	2
第貳章 開架式混階的除錯環境	3
2.1 開架式互動介面	3
2.2 互動的除錯方式	4
2.3 目前工作範圍	6
2.4 混階除錯	8
第參章 多執行緒程式的除錯	9
3.1 多緒程式的除錯	9
3.2 執行緒的狀態管理	10
第肆章 靈活的除錯方式	12
4.1 中斷式	12
4.2 除錯步伐	14
4.3 靈活的尋錯	17
第伍章 系統設計與實作	23
5.1 直譯機制	23
5.2 中斷機制	25
5.3 原始碼的繪製	27
5.4 多視窗的轉換	31
5.5 開架式介面與多緒管理	32
第陸章 總結與展望	34
參考文獻	35
附錄一、步伐指示規格書	37
一、	算式步伐的指示	37
二、	敘述步伐的指示	48
附錄二、使用者手冊	61
一、	系統安裝	61
二、	系統使用說明	61
三、	執行程式	66
四、	如何靈活除錯	68
五、	開架式介面的用法	74
六、	開架式介面的指令列表	75

圖目錄
圖1、本論文除錯器的畫面	4
圖2、OAI與除錯器的搭配應用	5
圖3、多緒程式的操作實例	10
圖4、語法樹的選取	14
圖5、中斷式的設置	15
圖6、相對步伐調整儀	17
圖7、相對步伐示意圖	18
圖8、語法樹的主要類別	23
圖9、類別定義單元 TLEVCLASSDEFUNIT	25
圖10、邊際範圍的套疊關係	30
圖11、調整畫筆樣式的程式碼	31
圖12、執行緒管理員類別圖	33
圖13、系統主畫面	62
圖14、專案目錄窗	63
圖15、API瀏覽器	64
圖16、原始碼展示區	65
圖17、全域變數窗	65
圖18、函式庫引用窗	66
圖19、專案目錄窗中的執行鈕	67
圖20、執行緒監看列	68
圖21、選取語法樹C+2並設置中斷式	69
圖22、靈活步伐調整器	69
圖23、步進工具列	70
圖24、除錯步驟(S1)畫面	71
圖25、除錯步驟(S2)畫面	72
圖26、除錯步驟(S3)畫面	72
圖27、除錯步驟(S4)畫面	72
圖28、除錯步驟(S5)畫面	73
圖29、除錯步驟(S6)畫面	73
圖30、除錯步驟(S7)畫面	73
圖31、步進工具列	74

表目錄
表1、除錯實例	1
表2、SHELL與OAI的對應關係	6
表3、多緒程式實例[2]	10
表4、精密的除錯步伐	16
表5、算式E.A=B+(C=3)*E.F(D)的相對步伐	18
表6、使用靈活的步伐進行除錯	21
表7、函數EVALUATE()的程式碼	26
表8、函數POSTSUSPENDCHECK的程式碼	26
表9、類別SETBYUNIT實作函數DRAW的程式碼	28
表10、函數DRAWACTION	29
表11、類別SETBYUNIT實作函數ACCEPT的程式碼	30
表12、運算符 - 的步伐指示	38
表13、後置運算符的步伐指示	38
表14、前置運算符的步伐指示	39
表15、運算符*的步伐指示	39
表16、三元運算符的步伐指示	40
表17、簡單指派運算符在欄位設值時的步伐指示	41
表18、簡單指派運算符在陣列設值時的步伐指示	42
表19、簡單指派運算符在變數設值時的步伐指示	42
表20、複合指派運算符在陣列設值的步伐指示	43
表21、複合指派運算符在變數設值時的步伐指示	44
表22、類別實體創建的步伐指示	44
表23、實體方法呼叫時的步伐指示	45
表24、靜態方法叫時的步伐指示	46
表25、有初始值的陣列創建的步伐指示	47
表26、無初始值的陣列創建的步伐指示	47
表27、陣列存取的步伐指示	48
表28、除錯實例	71
參考文獻
[1]Aho, A. V., Sethi, R., and Ullman, J. D., Compiler Principles, Techniques, and Tools, Addison-Wesley, 1985.
[2]Arnold, K., Gosling J., and Holmes, D., The Java Programming Language 4th edition, Prentice Hall PTR, August 2005.
[3]Beck, K., and Gamma, E., “JUnit Open-Source Testing Framework”, June 2009 (available online at http://www.junit.org).
[4]Eclipse Foundation, “Eclipse and Java: Using the Debugger”, May 2009 (available online at http://eclipsetutorial.sourceforge.net/debugger.html).
[5]Gamma, E., Helm R., Johnson R., and Vlissides J., Design Patterns: Elements of Reusable Object-Oriented Software, Addison-Wesley, 1994.
[6]Joy, W., “An Introduction to the C Shell”, 4.3 BSD Unix User’s Manual, chapter 4, page USD:4. 1986,
[7]Microsoft Corporation, “Command-line reference”, Dec 2009 (available online at http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/ntcmds.mspx?mfr=true).
[8]Microsoft Corporation, “Microsoft Visual Studio 2008”, June 2009 (available online at http://www.microsoft.com/visualstudio/en-us/default.mspx).
[9]Newham, C., and Rosenblatt B., Learning the Bash Shell, 2nd edition, O’Reilly & Associates, Inc, 1998.
[10]Prytherch, R., Librarians’ Glossary and Reference Book 5th, Gower Publishing Company, 1984.
[11]Sun Microsystems, Inc., “Java SE Overview”, June 2009 (available online at http://java.sun.com/javase/).
[12]Sun Microsystems, Inc., “The Reflection API”, Feb 2008 (available online at http://java.sun.com/docs/books/tutorial/reflect/index.html).
[13]Sun Microsystems, Inc., “NetBeans IDE 6.5 Features”, June 2009 (available online at http://www.netbeans.org/features/java/debugger.html).
[14]Walrath, K., Campione, M., Huml, A., and Zakhour, S., The JFC Swing Tutorial: A Guide to Constructing GUIs 2nd Edition, Prentice Hall PTR, Mar. 2004.
論文全文使用權限
校內
紙本論文於授權書繳交後3年公開
同意電子論文全文授權校園內公開
校內電子論文於授權書繳交後3年公開
校外
同意授權
校外電子論文於授權書繳交後3年公開

如有問題,歡迎洽詢!
圖書館數位資訊組 (02)2621-5656 轉 2487 或 來信