Login | Register

Studying and Leveraging User-Provided Logs in Bug Reports for Debugging Assistance

Title:

Studying and Leveraging User-Provided Logs in Bug Reports for Debugging Assistance

An Ran, Chen (2019) Studying and Leveraging User-Provided Logs in Bug Reports for Debugging Assistance. Masters thesis, Concordia University.

[thumbnail of Chen_MASc_F2019.pdf]
Preview
Text (application/pdf)
Chen_MASc_F2019.pdf - Accepted Version
Available under License Spectrum Terms of Access.
478kB

Abstract

Bug reports provide important information for developers to debug user-reported issues. During the debugging process, developers need to study the bug report and examine user-provided logs to understand the system execution paths that lead to the problem. Prior studies on bug reports also found that such user-provided often contain valuable debugging information to developers. In this thesis, we conduct a tool-assisted study to study user-provided logs in bug reports. Our goal is to study any challenges that developers may encounter when analyzing the logs, and how many additional buggy classes can the logs help to identify. In particular, we study both system-generated logs and exception stack traces. Our approach tries to simulate developers' debugging process by 1) identifying the location in the source code where the logs were generated, 2) re-constructing execution paths by finding the call paths are can be traced back from the logs, and 3) studying the additional buggy classes that the re-constructed execution paths identify. We conduct our study on eight large-scale open-source systems with a total of 1,145 bug reports that contain logs. We find that the execution paths cannot be constructed in 32% of the studied bug reports, since many logs can no longer be found in the source code due to code evolution, and users often provide logs that are generated by third-party frameworks. In the rest of the cases, the re-constructed execution paths can identify 15% additional buggy classes in 41% of the bug reports. Through a comprehensive manual study, we find that the main reasons that the re-constructed execution paths fail to identify additional buggy classes are that reporters often only attach logs that describe the unexpected behavior (e.g., stack traces) without additional logs to illustrate the system execution. In summary, this thesis highlights both the challenges and potentials of using user-provided logs to assist developers with debugging. It also revealed common issues with user-provided logs in bug reports, and provided suggestions for future research.

Divisions:Concordia University > Gina Cody School of Engineering and Computer Science > Computer Science and Software Engineering
Item Type:Thesis (Masters)
Authors:An Ran, Chen
Institution:Concordia University
Degree Name:M.A. Sc.
Program:Software Engineering
Date:10 September 2019
Thesis Supervisor(s):Chen, Tse-Hsun (Peter)
Keywords:Debugging Empirical software engineering Software evolution and maintenance
ID Code:985950
Deposited By: AN RAN CHEN
Deposited On:06 Feb 2020 02:39
Last Modified:06 Feb 2020 02:39

References:

[1] Thomas D. LaToza and Brad A. Myers. Developers ask reachability questions. In Proceedings
of the 32Nd ACM/IEEE International Conference on Software Engineering, ICSE ’10, pages
185–194, 2010.

[2] Wei Jin and Alessandro Orso. Bugredux: Reproducing field failures for in-house debugging.
In Proceedings of the 34th International Conference on Software Engineering, ICSE ’12, pages
474–484, 2012.

[3] Ding Yuan, Haohui Mai, Weiwei Xiong, Lin Tan, Yuanyuan Zhou, and Shankar Pasupathy.
Sherlog: Error diagnosis by connecting clues from run-time logs. In Proceedings of the 15th
International Conference on Architectural Support for Programming Languages and Operating
Systems (ASPLOS), pages 143–154, 2010.

[4] Ding Yuan, Jing Zheng, Soyeon Park, Yuanyuan Zhou, and Stefan Savage. Improving software
diagnosability via log enhancement. In ASPLOS ’11: Proceedings of the sixteenth international
conference on Architectural support for programming languages and operating systems, pages
3–14, Newport Beach, California, USA, 2011. ACM.

[5] Rongxin Wu, Hongyu Zhang, Shing-Chi Cheung, and Sunghun Kim. Crashlocator: Locating
crashing faults based on crash stacks. In Proceedings of the 2014 International Symposium on
Software Testing and Analysis, ISSTA 2014, pages 204–214, 2014.

[6] M. Soltani, A. Panichella, and A. Van Deursen. Search-based crash reproduction and its impact
on debugging. IEEE Transactions on Software Engineering, pages 1–1, 2018.

[7] Francesco A. Bianchi, Mauro Pezzè, and Valerio Terragni. Reproducing concurrency failures
from crash stacks. In Proceedings of the 2017 11th Joint Meeting on Foundations of Software
Engineering, ESEC/FSE 2017, pages 705–716, 2017.

[8] Yu Cao, Hongyu Zhang, and Sun Ding. Symcrash: Selective recording for reproducing crashes.
In Proceedings of the 29th ACM/IEEE International Conference on Automated Software Engineering, ASE ’14, pages 791–802, 2014.
38

[9] Weiyi Shang, Zhen Ming Jiang, Hadi Hemmati, Bram Adams, Ahmed E. Hassan, and Patrick
Martin. Assisting developers of big data analytics applications when deploying on hadoop
clouds. In Proceedings of the 2013 International Conference on Software Engineering, ICSE
’13, pages 402–411, 2013.

[10] Kiavash Satvat and Nitesh Saxena. Crashing privacy: An autopsy of a web browser’s leaked
crash reports. CoRR, abs/1808.01718, 2018.

[11] Tse-Hsun Chen, Mark D. Syer, Weiyi Shang, Zhen Ming Jiang, Ahmed E. Hassan, Mohamed
Nasser, and Parminder Flora. Analytics-driven load testing: An industrial experience report
on load testing of large-scale systems. In Proceedings of the 39th International Conference on
Software Engineering: Software Engineering in Practice Track, ICSE-SEIP ’17, pages 243–252,
2017.

[12] Nicolas Bettenburg, Sascha Just, Adrian Schröter, Cathrin Weiss, Rahul Premraj, and Thomas
Zimmermann. What makes a good bug report? In Proceedings of the 16th International
Symposium on Foundations of Software Engineering, November 2008.

[13] John Anvik, Lyndon Hiew, and Gail C. Murphy. Who should fix this bug? In Proceedings of
the 28th International Conference on Software Engineering, ICSE ’06, pages 361–370, 2006.

[14] Ding Yuan, Soyeon Park, and Yuanyuan Zhou. Characterizing logging practices in open-source
software. In Proceedings of the 2012 International Conference on Software Engineering, pages
102–112, 2012.

[15] Boyuan Chen and Zhen Ming (Jack) Jiang. Characterizing logging practices in java-based open
source software projects – a replication study in apache software foundation. Empirical Software
Engineering, 22(1):330–374, Feb 2017.

[16] Zhenhao Li, Tse-Hsun (Peter) Chen, Jinqiu Yang, and Weiyi Shang. DLfinder: Characterizing
and detecting duplicate logging code smells. In Proceedings of the 41st International Conference
on Software Engineering, ICSE ’19, pages 152–163, 2019.

[17] Ding Yuan, Yu Luo, Xin Zhuang, Guilherme Renna Rodrigues, Xu Zhao, Yongle Zhang,
Pranay U. Jain, and Michael Stumm. Simple testing can prevent most critical failures: An
analysis of production failures in distributed data-intensive systems. In Proceedings of the 11th
USENIX Conference on Operating Systems Design and Implementation, OSDI’14, pages 249–
265, 2014.

[18] Tse-Hsun Chen, Weiyi Shang, Ahmed E. Hassan, Mohamed Nasser, and Parminder
Flora. Cacheoptimizer: Helping developers configure caching frameworks for hibernate-based
39
database-centric web applications. In Proceedings of the 24th ACM SIGSOFT International
Symposium on Foundations of Software Engineering, FSE 2016, pages 666–677, 2016.

[19] Xu Zhao, Yongle Zhang, David Lion, Muhammad Faizan Ullah, Yu Luo, Ding Yuan, and
Michael Stumm. Lprof: A non-intrusive request flow profiler for distributed systems. In Proceedings of the 11th USENIX Conference on Operating Systems Design and Implementation,
OSDI’14, pages 629–644. USENIX Association, 2014.

[20] Heng Li, Tse-Hsun (Peter) Chen, Ahmed E. Hassan, Mohamed Nasser, and Parminder Flora.
Adopting autonomic computing capabilities in existing large-scale systems: An industrial experience report. In Proceedings of the 40th International Conference on Software Engineering:
Software Engineering in Practice, ICSE-SEIP ’18, pages 1–10, 2018.

[21] Boyuan Chen, Jian Song, Peng Xu, Xing Hu, and Zhen Ming (Jack) Jiang. An automated
approach to estimating code coverage measures via execution logs. In Proceedings of the 33rd
ACM/IEEE International Conference on Automated Software Engineering, ASE ’18, pages 305–
316, 2018.

[22] Wei Xu, Ling Huang, Armando Fox, David Patterson, and Michael I. Jordan. Detecting largescale system problems by mining console logs. In SOSP ’09: Proceedings of the ACM SIGOPS
22nd symposium on Operating systems principles, pages 117–132, Big Sky, Montana, USA,
2009. ACM.

[23] Qiang Fu, Jian-Guang Lou, Yi Wang, and Jiang Li. Execution anomaly detection in distributed
systems through unstructured log analysis. In 2009 ninth IEEE international conference on data
mining, pages 149–158. IEEE, 2009.

[24] Shilin He, Qingwei Lin, Jian-Guang Lou, Hongyu Zhang, Michael R Lyu, and Dongmei Zhang.
Identifying impactful service system problems via log analysis. In Proceedings of the 2018
26th ACM Joint Meeting on European Software Engineering Conference and Symposium on the
Foundations of Software Engineering, pages 60–70. ACM, 2018.

[25] Jian-Guang Lou, Qiang Fu, Shengqi Yang, Ye Xu, and Jiang Li. Mining invariants from console
logs for system problem detection. In USENIX Annual Technical Conference, pages 23–25,
2010.

[26] Shilin He, Jieming Zhu, Pinjia He, and Michael R Lyu. Experience report: system log analysis
for anomaly detection. In 2016 IEEE 27th International Symposium on Software Reliability
Engineering (ISSRE), pages 207–218. IEEE, 2016.
40

[27] Michael Chow, David Meisner, Jason Flinn, Daniel Peek, and Thomas F. Wenisch. The mystery
machine: End-to-end performance analysis of large-scale internet services. In Proceedings of the
11th USENIX Conference on Operating Systems Design and Implementation, OSDI’14, pages
217–231. USENIX Association, 2014.

[28] Ding Yuan, Soyeon Park, Peng Huang, Yang Liu, Michael M. Lee, Xiaoming Tang, Yuanyuan
Zhou, and Stefan Savage. Be conservative: Enhancing failure diagnosis with proactive logging. In Presented as part of the 10th USENIX Symposium on Operating Systems Design and
Implementation (OSDI 12), pages 293–306, 2012.

[29] Qingwei Lin, Hongyu Zhang, Jian-Guang Lou, Yu Zhang, and Xuewei Chen. Log clustering
based problem identification for online service systems. In Proceedings of the 38th International
Conference on Software Engineering Companion, ICSE ’16, pages 102–111, 2016.

[30] Karthik Nagaraj, Charles Edwin Killian, and Jennifer Neville. Structured comparative analysis of systems logs to diagnose performance problems. In Proceedings of the 9th USENIX
Symposium on Networked Systems Design and Implementation, NSDI ’12, pages 353–366, 2012.

[31] Nicolas Bettenburg, Rahul Premraj, Thomas Zimmermann, and Sunghun Kim. Duplicate bug
reports considered harmful... really? In Proceedings of the 24th IEEE International Conference
on Software Maintenance, ICSM ’18, September 2008.

[32] Jian Zhou, Hongyu Zhang, and David Lo. Where should the bugs be fixed? - more accurate
information retrieval-based bug localization based on bug reports. In Proceedings of the 34th
International Conference on Software Engineering, ICSE ’12, pages 14–24, 2012.

[33] Ripon K. Saha, Matthew Lease, Sarfraz Khurshid, and Dewayne E. Perry. Improving bug
localization using structured information retrieval. In Proceedings of the 28th IEEE/ACM
International Conference on Automated Software Engineering, ASE’13, pages 345–355, 2013.

[34] Mohammad Masudur Rahman and Chanchai K. Roy. Improving bug localization with report
quality dynamics and query reformulation. In Proceedings of the 40th International Conference
on Software Engineering: Companion Proceeedings, ICSE ’18, pages 348–349, 2018.

[35] An Ngoc Lam, Anh Tuan Nguyen, Hoan Anh Nguyen, and Tien N. Nguyen. Bug localization with combination of deep learning and information retrieval. In Proceedings of the 25th
International Conference on Program Comprehension, ICPC ’17, pages 218–229, 2017.

[36] Shaowei Wang and David Lo. Amalgam+: Composing rich information sources for accurate
bug localization. Journal of Software: Evolution and Process, 28(10):921–942, 2016.
41

[37] Bing Liu, Lucia, Shiva Nejati, Lionel C. Briand, and Thomas Bruckmann. Simulink fault
localization: an iterative statistical debugging approach. Software Testing, Verification and
Reliability, 26(6):431–459, 2016.

[38] Pablo Loyola, Kugamoorthy Gajananan, and Fumiko Satoh. Bug localization by learning to rank
and represent bug inducing changes. In Proceedings of the 27th ACM International Conference
on Information and Knowledge Management, CIKM ’18, pages 657–665, 2018.

[39] Tung Dao, Lingming Zhang, and Na Meng. How does execution information help with
information-retrieval based bug localization? In Proceedings of the 25th International Conference on Program Comprehension, ICPC ’17, pages 241–250, 2017.

[40] Ranjita Bhagwan, Rahul Kumar, Chandra Sekhar Maddila, and Adithya Abraham Philip. Orca:
Differential bug localization in large-scale services. In 13th USENIX Symposium on Operating
Systems Design and Implementation (OSDI 18), pages 493–509. USENIX Association, 2018.

[41] Bunyamin Sisman and Avinash C. Kak. Incorporating version histories in information retrieval
based bug localization. In Proceedings of the 9th IEEE Working Conference on Mining Software
Repositories, MSR ’12, pages 50–59, 2012.

[42] O. Chaparro, J. M. Florez, and A. Marcus. Using observed behavior to reformulate queries
during text retrieval-based bug localization. In Proceedings of the 33rd International Conference
on Software Maintenance and Evolution, ICSME ’17, pages 376–387, 2017.

[43] Rui Abreu, Peter Zoeteweij, and Arjan J. C. van Gemund. Spectrum-based multiple fault
localization. In Proceedings of the IEEE/ACM International Conference on Automated Software
Engineering, ASE ’09, pages 88–99, 2009.

[44] Rui Abreu, Peter Zoeteweij, and Arjan J. C. van Gemund. On the accuracy of spectrum-based
fault localization. In Proceedings of the Testing: Academic and Industrial Conference Practice
and Research Techniques - MUTATION, TAICPART-MUTATION ’07, pages 89–98, 2007.

[45] Rui Abreu, Peter Zoeteweij, Rob Golsteijn, and Arjan J. C. van Gemund. A practical evaluation of spectrum-based fault localization. Journal of Systems and Software, 82(11):1780–1792,
November 2009.

[46] James A. Jones and Mary Jean Harrold. Empirical evaluation of the tarantula automatic faultlocalization technique. In Proceedings of the 20th IEEE/ACM International Conference on
Automated Software Engineering, ASE ’05, pages 273–282, 2005.
42

[47] Diptikalyan Saha, Mangala Gowri Nanda, Pankaj Dhoolia, V. Krishna Nandivada, Vibha Sinha,
and Satish Chandra. Fault localization for data-centric programs. In Proceedings of the 19th
ACM SIGSOFT Symposium and the 13th European Conference on Foundations of Software
Engineering, ESEC/FSE ’11, pages 157–167, 2011.

[48] Apache. Aapache JIRA, 2019. Last accessed: Feb. 1, 2019.

[49] Qiang Fu, Jieming Zhu, Wenlu Hu, Jian-Guang Lou, Rui Ding, Qingwei Lin, Dongmei Zhang,
and Tao Xie. Where do developers log? an empirical study on logging practices in industry.
In Proceedings of the 36th International Conference on Software Engineering, ICSE-SEIP ’14,
pages 24–33, 2014.

[50] JavaParser. https://javaparser.org/, 2019. Last accessed Aug 1 2019.

[51] P. He, J. Zhu, S. He, J. Li, and M. R. Lyu. Towards automated log parsing for large-scale log
data analysis. IEEE Transactions on Dependable and Secure Computing, 15(6):931–944, 2018.

[52] Joseph Tucek, Shan Lu, Chengdu Huang, Spiros Xanthos, and Yuanyuan Zhou. Triage: Diagnosing production run failures at the user’s site. In Proceedings of 21st ACM SIGOPS Symposium on Operating Systems Principles, SOSP ’07, pages 131–144, 2007.

[53] D.S. Moore, G.P. MacCabe, and B.A. Craig. Introduction to the Practice of Statistics. W.H.
Freeman and Company, 2009.

[54] Beat Fluri, Michael Wuersch, Martin PInzger, and Harald Gall. Change distilling: Tree differencing for fine-grained source code change extraction. IEEE Transactions on Software Engineering, 33(11):725–743, November 2007.

[55] Collin McMillan, Mark Grechanik, Denys Poshyvanyk, Qing Xie, and Chen Fu. Portfolio:
Finding relevant functions and their usage. In Proceedings of the 33rd International Conference
on Software Engineering, ICSE ’11, pages 111–120, 2011.

[56] Thorsten Karrer, Jan-Peter Krämer, Jonathan Diehl, Björn Hartmann, and Jan Borchers.
Stacksplorer: Call graph navigation helps increasing code maintenance efficiency. In Proceedings of the 24th Annual ACM Symposium on User Interface Software and Technology, UIST
’11, pages 217–224, 2011.

[57] Thomas Eisenbarth, Rainer Koschke, and Daniel Simon. Aiding program comprehension by
static and dynamic feature analysis. In Proceedings of the IEEE International Conference on
Software Maintenance, ICSM ’01, pages 602–611, 2001.
All items in Spectrum are protected by copyright, with all rights reserved. The use of items is governed by Spectrum's terms of access.

Repository Staff Only: item control page

Research related to the current document (at the CORE website)
- Research related to the current document (at the CORE website)
Back to top Back to top