{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,2,17]],"date-time":"2026-02-17T11:49:15Z","timestamp":1771328955669,"version":"3.50.1"},"reference-count":42,"publisher":"Association for Computing Machinery (ACM)","issue":"2","license":[{"start":{"date-parts":[[2010,8,1]],"date-time":"2010-08-01T00:00:00Z","timestamp":1280620800000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"funder":[{"DOI":"10.13039\/100000143","name":"Division of Computing and Communication Foundations","doi-asserted-by":"publisher","award":["IIS-0329090CCF-0811610ITR CCR-0324770"],"award-info":[{"award-number":["IIS-0329090CCF-0811610ITR CCR-0324770"]}],"id":[{"id":"10.13039\/100000143","id-type":"DOI","asserted-by":"publisher"}]},{"DOI":"10.13039\/100000145","name":"Division of Information and Intelligent Systems","doi-asserted-by":"publisher","award":["IIS-0329090CCF-0811610ITR CCR-0324770"],"award-info":[{"award-number":["IIS-0329090CCF-0811610ITR CCR-0324770"]}],"id":[{"id":"10.13039\/100000145","id-type":"DOI","asserted-by":"publisher"}]},{"DOI":"10.13039\/100000001","name":"National Science Foundation","doi-asserted-by":"publisher","award":["IIS-0329090CCF-0811610ITR CCR-0324770"],"award-info":[{"award-number":["IIS-0329090CCF-0811610ITR CCR-0324770"]}],"id":[{"id":"10.13039\/100000001","id-type":"DOI","asserted-by":"publisher"}]}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["ACM Trans. Softw. Eng. Methodol."],"published-print":{"date-parts":[[2010,8]]},"abstract":"<jats:p>When software developers want to understand the reason for a program's behavior, they must translate their questions about the behavior into a series of questions about code, speculating about the causes in the process. The Whyline is a new kind of debugging tool that avoids such speculation by instead enabling developers to select a question about program output from a set of \u201cwhy did and why didn't\u201d questions extracted from the program's code and execution. The tool then finds one or more possible explanations for the output in question. These explanations are derived using a static and dynamic slicing, precise call graphs, reachability analyses, and new algorithms for determining potential sources of values. Evaluations of the tool on two debugging tasks showed that developers with the Whyline were three times more successful and twice as fast at debugging, compared to developers with traditional breakpoint debuggers. The tool has the potential to simplify debugging and program understanding in many software development contexts.<\/jats:p>","DOI":"10.1145\/1824760.1824761","type":"journal-article","created":{"date-parts":[[2010,9,7]],"date-time":"2010-09-07T15:48:20Z","timestamp":1283874500000},"page":"1-36","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":29,"title":["Extracting and answering why and why not questions about Java program output"],"prefix":"10.1145","volume":"20","author":[{"given":"Amy J.","family":"Ko","sequence":"first","affiliation":[{"name":"University of Washington, Seattle, Seattle, WA"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Brad A.","family":"Myers","sequence":"additional","affiliation":[{"name":"Carnegie Mellon University, Pittsburgh, Pittsburgh, PA"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"320","published-online":{"date-parts":[[2010,9,8]]},"reference":[{"key":"e_1_2_1_1_1","doi-asserted-by":"publisher","DOI":"10.1109\/VLHCC.2005.42"},{"key":"e_1_2_1_2_1","doi-asserted-by":"publisher","DOI":"10.1007\/11774303_7"},{"key":"e_1_2_1_3_1","doi-asserted-by":"publisher","DOI":"10.1145\/1050849.1050865"},{"key":"e_1_2_1_4_1","unstructured":"Bothell D. 2004. ACT-R Environment Manual Ver. 5.0. http:\/\/act-r.psy.cmu.edu\/software\/EnvironmentManual.pdf.  Bothell D. 2004. ACT-R Environment Manual Ver. 5.0. http:\/\/act-r.psy.cmu.edu\/software\/EnvironmentManual.pdf."},{"key":"e_1_2_1_5_1","doi-asserted-by":"publisher","DOI":"10.1002\/(SICI)1097-024X(200006)30:7%3C775::AID-SPE309%3E3.0.CO;2-H"},{"key":"e_1_2_1_6_1","volume-title":"Proceedings of the National Conference on Artificial Intelligence (AAAI). 870--877","author":"Chalupsky H.","unstructured":"Chalupsky , H. and Russ , T. A . 2002. Why not: Debugging failed queries in large knowledge bases . In Proceedings of the National Conference on Artificial Intelligence (AAAI). 870--877 . Chalupsky, H. and Russ, T. A. 2002. Why not: Debugging failed queries in large knowledge bases. In Proceedings of the National Conference on Artificial Intelligence (AAAI). 870--877."},{"key":"e_1_2_1_7_1","doi-asserted-by":"publisher","DOI":"10.1145\/1298406.1298419"},{"key":"e_1_2_1_8_1","doi-asserted-by":"publisher","DOI":"10.1109\/ICSE.2007.10"},{"key":"e_1_2_1_9_1","doi-asserted-by":"publisher","DOI":"10.1145\/1062455.1062522"},{"key":"e_1_2_1_10_1","doi-asserted-by":"publisher","DOI":"10.1145\/1176617.1176667"},{"key":"e_1_2_1_11_1","unstructured":"Cooper K. D. Harvey T. J. and Kennedy K. 2001. A simple fast dominance algorithm. http:\/\/www.hipersoft.rice.edu\/grads\/publications\/dom14.pdf.  Cooper K. D. Harvey T. J. and Kennedy K. 2001. A simple fast dominance algorithm. http:\/\/www.hipersoft.rice.edu\/grads\/publications\/dom14.pdf."},{"key":"e_1_2_1_12_1","doi-asserted-by":"publisher","DOI":"10.1109\/ICSM.2005.42"},{"key":"e_1_2_1_13_1","doi-asserted-by":"publisher","DOI":"10.1145\/506315.506316"},{"key":"e_1_2_1_14_1","doi-asserted-by":"publisher","DOI":"10.1145\/1101908.1101948"},{"key":"e_1_2_1_15_1","doi-asserted-by":"publisher","DOI":"10.1145\/1101908.1101949"},{"key":"e_1_2_1_16_1","doi-asserted-by":"publisher","DOI":"10.1145\/1518701.1518942"},{"key":"e_1_2_1_17_1","volume-title":"CMU-CS-08-122","author":"Ko A. J.","unstructured":"Ko , A. J. 2008. Asking and answering questions about the causes of software behaviors. Dissertation , CMU-CS-08-122 , Human-Computer Interaction Institute, Carnegie Mellon University . Ko, A. J. 2008. Asking and answering questions about the causes of software behaviors. Dissertation, CMU-CS-08-122, Human-Computer Interaction Institute, Carnegie Mellon University."},{"key":"e_1_2_1_18_1","doi-asserted-by":"publisher","DOI":"10.1145\/1368088.1368130"},{"key":"e_1_2_1_19_1","doi-asserted-by":"publisher","DOI":"10.1109\/ICSE.2007.45"},{"key":"e_1_2_1_20_1","doi-asserted-by":"publisher","DOI":"10.1109\/VLHCC.2006.3"},{"key":"e_1_2_1_21_1","doi-asserted-by":"publisher","DOI":"10.1109\/TSE.2006.116"},{"key":"e_1_2_1_22_1","doi-asserted-by":"publisher","DOI":"10.1145\/985692.985712"},{"key":"e_1_2_1_23_1","doi-asserted-by":"publisher","DOI":"10.1109\/VLHCC.2004.47"},{"key":"e_1_2_1_24_1","doi-asserted-by":"publisher","DOI":"10.1016\/0020-0190(88)90054-3"},{"key":"e_1_2_1_25_1","doi-asserted-by":"publisher","DOI":"10.1145\/1287624.1287675"},{"key":"e_1_2_1_26_1","doi-asserted-by":"publisher","DOI":"10.1023\/A:1021816917888"},{"key":"e_1_2_1_27_1","volume-title":"Proceedings of the International Workshop on Automated Debugging. 225--235","author":"Lewis B.","year":"2003","unstructured":"Lewis , B. 2003 . Debugging backwards in time . In Proceedings of the International Workshop on Automated Debugging. 225--235 . Lewis, B. 2003. Debugging backwards in time. In Proceedings of the International Workshop on Automated Debugging. 225--235."},{"key":"e_1_2_1_28_1","doi-asserted-by":"publisher","DOI":"10.1145\/1065010.1065014"},{"key":"e_1_2_1_29_1","volume-title":"Proceedings of the IEEE International Workshop on Source Code Analysis and Manipulation. 155","author":"Milanova A.","unstructured":"Milanova , A. , Rountev , A. , and Ryder , B. G . 2002. Precise call graph construction in the presence of function pointers . In Proceedings of the IEEE International Workshop on Source Code Analysis and Manipulation. 155 . Milanova, A., Rountev, A., and Ryder, B. G. 2002. Precise call graph construction in the presence of function pointers. In Proceedings of the IEEE International Workshop on Source Code Analysis and Manipulation. 155."},{"key":"e_1_2_1_30_1","doi-asserted-by":"publisher","DOI":"10.1145\/1124772.1124832"},{"key":"e_1_2_1_31_1","volume-title":"Proceedings of the Australian Software Engineering Conference. 251","author":"Potanin A.","unstructured":"Potanin , A. , Noble , J. , and Biddle , R . 2004. Snapshot query-based debugging . In Proceedings of the Australian Software Engineering Conference. 251 . Potanin, A., Noble, J., and Biddle, R. 2004. Snapshot query-based debugging. In Proceedings of the Australian Software Engineering Conference. 251."},{"key":"e_1_2_1_32_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.jvlc.2004.07.001"},{"key":"e_1_2_1_33_1","doi-asserted-by":"publisher","DOI":"10.1145\/1250734.1250748"},{"key":"e_1_2_1_34_1","volume-title":"The economic impacts of inadequate infrastructure for software testing. RTI Project 7007.011","author":"Tassey G.","year":"2002","unstructured":"Tassey , G. 2002. The economic impacts of inadequate infrastructure for software testing. RTI Project 7007.011 , 2002 , National Institute of Standards and Technology . Tassey, G. 2002. The economic impacts of inadequate infrastructure for software testing. RTI Project 7007.011, 2002, National Institute of Standards and Technology."},{"key":"e_1_2_1_35_1","doi-asserted-by":"publisher","DOI":"10.1145\/1240624.1240630"},{"key":"e_1_2_1_36_1","doi-asserted-by":"publisher","DOI":"10.1145\/248448.248457"},{"key":"e_1_2_1_37_1","doi-asserted-by":"publisher","DOI":"10.1145\/604045.604124"},{"key":"e_1_2_1_38_1","volume-title":"Proceedings of the International Conference on Software Engineering. 512--521","author":"Wang T.","unstructured":"Wang , T. and Roychoudhury , A . 2004. Using compressed bytecode traces for slicing Java programs , In Proceedings of the International Conference on Software Engineering. 512--521 . Wang, T. and Roychoudhury, A. 2004. Using compressed bytecode traces for slicing Java programs, In Proceedings of the International Conference on Software Engineering. 512--521."},{"key":"e_1_2_1_39_1","doi-asserted-by":"publisher","DOI":"10.1145\/358557.358577"},{"key":"e_1_2_1_40_1","doi-asserted-by":"publisher","DOI":"10.1109\/AST.2007.15"},{"key":"e_1_2_1_41_1","doi-asserted-by":"publisher","DOI":"10.1145\/587051.587053"},{"key":"e_1_2_1_42_1","doi-asserted-by":"publisher","DOI":"10.1145\/1089008.1089012"}],"container-title":["ACM Transactions on Software Engineering and Methodology"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/1824760.1824761","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/1824760.1824761","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T11:39:33Z","timestamp":1750246773000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/1824760.1824761"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2010,8]]},"references-count":42,"journal-issue":{"issue":"2","published-print":{"date-parts":[[2010,8]]}},"alternative-id":["10.1145\/1824760.1824761"],"URL":"https:\/\/doi.org\/10.1145\/1824760.1824761","relation":{},"ISSN":["1049-331X","1557-7392"],"issn-type":[{"value":"1049-331X","type":"print"},{"value":"1557-7392","type":"electronic"}],"subject":[],"published":{"date-parts":[[2010,8]]},"assertion":[{"value":"2008-09-01","order":0,"name":"received","label":"Received","group":{"name":"publication_history","label":"Publication History"}},{"value":"2009-04-01","order":1,"name":"accepted","label":"Accepted","group":{"name":"publication_history","label":"Publication History"}},{"value":"2010-09-08","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}