博碩士論文 101552023 詳細資訊




以作者查詢圖書館館藏 以作者查詢臺灣博碩士 以作者查詢全國書目 勘誤回報 、線上人數:3 、訪客IP:3.233.220.21
姓名 陳琬元(Wan-yuan Chen)  查詢紙本館藏   畢業系所 資訊工程學系在職專班
論文名稱 nono
(ThreadDebugger: Dynamic Concurrency Observation and Analysis tool based on Debugger Watch/Break Points)
相關論文
★ 使用PolyTraceAid進行程式文件覆蓋率計算與分群★ Support Visual Debugging in Electronic Design Automation Software by xDIVA
★ 設計與實作視覺化追蹤點以支援xDIVA進行程式動畫★ Combine Internal Test Oracles and Capture/Replay GUI Testing for Precise Replay and Higher Validation Power
★ Dissimilarity of Polymorphic Execution Sequences★ The Analysis of Capturing System Test Cases into Unit Test Cases
★ 動態延遲載入的測試覆蓋率★ 建構於JMeter之自動化分散式壓力測試架構
★ 模組化因修改具耦合的程式碼所伴隨的成本漣漪★ Design a Pluggable Architecture for Layout Algorithms in xDIVA
★ 重複性程式碼檢測之外掛模組設計★ Visual Perception of Realistic Rendering in xDiva 3D Environment
★ Why and When GUI Test Automation Fails in Practice and Our Solutions to The Problem★ Why and When GUI Test Automation Fails in Practice and Our Solutions to The Problem
★ Very High Precision Optical Character Recognition For Clean-Fixed-Sized True Type Characters★ Enhance Korat by Branch Capability in Capture/Replay User Scenario to Industrial Test Case Automation
檔案 [Endnote RIS 格式]    [Bibtex 格式]    [相關文章]   [文章引用]   [完整記錄]   [館藏目錄]   [檢視]  [下載]
  1. 本電子論文使用權限為同意立即開放。
  2. 已達開放權限電子全文僅授權使用者為學術研究之目的,進行個人非營利性質之檢索、閱讀、列印。
  3. 請遵守中華民國著作權法之相關規定,切勿任意重製、散佈、改作、轉貼、播送,以免觸法。

摘要(中) 多執行緒程式的開發過程中,除錯一直都是程式開發人員能力的重大考驗。許多學術研究,往往只針對某種錯誤去做偵測,如dead lock或race condition這類的錯誤。但是大部分的開發人員,對多執行緒程式開發的知識較為薄弱,錯誤發生時,有時候他們根本不明白發生了什麼問題,自然也無從去找到適合的工具。因此,除錯過程中,往往曠日廢時,難以找出錯誤。一般的整合開發環境,有提供非常基本的多執行緒觀察的功能,但是這些的除錯的功能,使用者通常不知道如何去使用它,往往只有實力強且除錯能力技巧高段的工程師,才勉強知道有這樣的功能存在。
本論文利用Visual Studio SDK,開發出能夠協助程式設計師們找出concurrency errors的外掛程式。本工具利用除錯器的資料監控點、中斷點、call stack等功能,提供一組基本的工具,協助程式設計師們釐清concurrency error的蛛絲馬跡。工具會將過程記錄,程式設計師們可利用它記錄下來的內容進行分析除錯。
摘要(英) In multi-threaded program development process, debugging can be a difficult task for programmers. Many academic research often focus on some kind of concurrency errors, such as a race detector is designed to detect race condition only. In practice, programmers may not have enough multi-threading programming knowledge. When a program crashes, a programmer may not be aware of that it could be a concurrency error. So , applying a suitable tool could be hard in real cases.
A debugger typically provides some very basic features to allow programmers to observe the status of the threads. In this thesis, we use the Visual Studio SDK to develop a tool called ThreadDebugger. This tool can help programmers to record the important traces and clues so that programmers can find the concurrency errors eventually. We use the wacthpoint to track memory access, and the log critical traces along the executions of threads. ThreadDebugger logs information such as stack frame, time tick and local variables. Programmer can use the log messages to dig out the causes and clues of concurrency errors.
關鍵字(中) ★ 多執行緒
★ 除錯器
★ 記錄
★ 工具
關鍵字(英) ★ multi-thread
★ debugger
★ log
★ tool
★ concurrency errors
論文目次 第一章 緒論 1
第一節 問題描述 1
第二節 研究方法 2
第二章 相關研究探討 5
第一節 軟體錯誤偵測與分析 5
2.1.1 Dynamic program analysis 5
2.1.2 Static code analysis 5
第二節 Race detector 6
第三節 Debugger 7
2.3.1 資料監控點(Data Breakpoint / Watch point) 7
2.3.2 中斷點和追蹤點 7
第三章 錯誤分析與概念 9
第一節 Concurrency errors 9
第二節 多執行緒程式的錯誤追蹤與分析 10
第三節 概念與案例 13
第四章 核心與實作 16
第一節 系統架構 16
第二節 實作與方法 18
4.2.1 Watch API 18
4.2.2 監視條件和監視目標 22
4.2.3 ThreadDebugger Log 25
4.2.4 DebugScript 27
第五章 實例討論 32
第一節 Race condition 32
5.1.1 a simple example 32
5.1.2 程式函式庫誤用引發的race condition 36
第二節 Deadlock - Philosopher dining problem 40
第六章 結論與未來展望 43
參考文獻 45
參考文獻 [1] C. Li, C. Ding, and K. Shen, "Quantifying the cost of context switch," presented at the Proceedings of the 2007 workshop on Experimental computer science, San Diego, California, 2007.
[2] L. Chew and D. Lie, "Kivati: fast detection and prevention of atomicity violations," presented at the Proceedings of the 5th European conference on Computer systems, Paris, France, 2010.
[3] R. Hastings and B. Joyce, Purify: fast detection of memory leaks and access errors, 1992.
[4] A. Srivastava and A. Eustace, "ATOM: a system for building customized program analysis tools," presented at the SIGPLAN Conference on Programming Language Design and Implementation, 1994.
[5] S. L. Graham, P. B. Kessler, and M. K. McKusick, "gprof: a Call Graph Execution Profiler," Sigplan Notices, pp. 120-126, 1982.
[6] J. Yang, D. Evans, D. Bhardwaj, T. Bhat, and M. Das, "Perracotta: mining temporal API rules from imperfect traces," presented at the International Conference on Software Engineering, 2006.
[7] J. Seward and N. Nethercote, "Using Valgrind to Detect Undefined Value Errors with Bit-Precision," presented at the USENIX Technical Conference, 2005.
[8] N. Nethercote and J. Seward, "Valgrind: A Program Supervision Framework," Electronic Notes in Theoretical Computer Science, vol. 89, pp. 44-66, 2003.
[9] J. W. Voung, R. Jhala, and S. Lerner, "RELAY: static race detection on millions of lines of code," presented at the Proceedings of the the 6th joint meeting of the European software engineering conference and the ACM SIGSOFT symposium on The foundations of software engineering, Dubrovnik, Croatia, 2007.
[10] S. H. Yong and S. Horwitz, "Using Static Analysis to Reduce Dynamic Analysis Overhead," Form. Methods Syst. Des., vol. 27, pp. 313-334, 2005.
[11] Helgrind: a data-race detector, 2005.
[12] S. Savage, M. Burrows, G. Nelson, P. Sobalvarro, and T. Anderson, "Eraser: a dynamic data race detector for multithreaded programs," ACM Transactions on Computer Systems, vol. 15, pp. 391-411, 1997.
[13] R. Chern and K. D. Volder, "Debugging with control-flow breakpoints," presented at the Proceedings of the 6th international conference on Aspect-oriented software development, Vancouver, British Columbia, Canada, 2007.
[14] J. B. Rosenberg, How debuggers work: algorithms, data structures, and architecture: John Wiley Sons, Inc., 1996.
[15] N. Jalbert and K. Sen, "A trace simplification technique for effective debugging of concurrent programs," presented at the Proceedings of the eighteenth ACM SIGSOFT international symposium on Foundations of software engineering, Santa Fe, New Mexico, USA, 2010.
[16] R. D. Blumofe and C. E. Leiserson, "Scheduling multithreaded computations by work stealing," J. ACM, vol. 46, pp. 720-748, 1999.
[17] R. S. Engelschall, "Portable multithreading: the signal stack trick for user-space thread creation," presented at the Proceedings of the annual conference on USENIX Annual Technical Conference, San Diego, California, 2000.
[18] D. Ciabrini, "Stack virtualization for source level debugging," Softw. Pract. Exper., vol. 37, pp. 693-725, 2007.
指導教授 鄭永斌(Yung-pin Cheng) 審核日期 2014-8-7
推文 facebook   plurk   twitter   funp   google   live   udn   HD   myshare   reddit   netvibes   friend   youpush   delicious   baidu   
網路書籤 Google bookmarks   del.icio.us   hemidemi   myshare   

若有論文相關問題,請聯絡國立中央大學圖書館推廣服務組 TEL:(03)422-7151轉57407,或E-mail聯絡  - 隱私權政策聲明