Abstract
Programmers need to understand their systems. They need to understand how their systems work and why they fail; why they perform well or poorly, and when the systems are behaving abnormally. Much of this involves understanding the dynamic behavior of complex software systems. These systems can involve multiple processes and threads, thousands of classes, and millions of lines of code. These systems are designed to run continuously, often running for months at a time. We consider the problem of using dynamic analysis and visualization to help programmers achieve the necessary understanding. To be effective this needs to be done on running applications with minimal overhead and in the high-level terms programmers use to think about their system. After going over past efforts in this area we look at our current work and then present a number of challenges for the future.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Aguilera, M.K., Mogul, J.C., Wiener, J.L., Reynolds, P., Muthitacharoen, A.: Performance debugging for distributed systems of black boxes. In: SOSP 2003, pp. 74–89 (October 2003)
Barham, P., Donnelly, A., Isaacs, R., Mortier, R.: Using magpie for request extraction and workload modelling. In: Proceedings of the Sixth USENIX Symposium on Operating Systems Design and Implementation (OSDI) (December 2004)
Chen, M.Y., Accardi, A., Kiciman, E., Lloyd, J., Patterson, D., Fox, A., Brewer, E.: Path-based failure and evolution management. In: NSDI 2004 (2004)
Cornelissen, B., Zaidman, A., van Deursen, A., Moonen, L., Koschke, R.: A systematic survey of program comprehension through dynamic analysis. Technical Report TUD-SERG-2008-033, Delft University of Technology (2008)
Engler, D., Chen, D.Y., Hallem, S., Chou, A., Chelf, B.: Bugs as deviant behavior: a general approach to inferring errors in systems code. In: Proc. 18th ACM Symp. on Operating Systems Principles, pp. 57–72 (2001)
Gupta, C., Mehta, A., Dayal, U.: PQR: predicting query execution times for autonomous workload management. In: Proceedings of the 2008 International Conference on Autonomic Computing, pp. 13–22 (June 2008)
Hellerstein, J.L., Maccabee, M., Mills, W.N., Turek, J.J.: ETE: a customizable approach to measuring end-to-end response times and their components in distributed systems. In: International Conference on Distributed Computing Systems (1999)
Israr, T.A., Lau, D.H., Franks, G., Woodside, M.: Automatic generation of layered queuing software performance models from commonly available traces. In: Proceedings of the 5th International Workshop on Software and Performance, pp. 147–158 (July 2005)
Ko, A.J., Myers, B.A.: Debugging reinvented: asking and answering why and why not questions about program behavior. In: ICSE 2008, pp. 301–310 (May 2008)
Koskinen, E., Jannotti, J.: Borderpatrol: isolating events for black-box tracing. In: EuroSys 2008, pp. 191–203 (2008)
Kremenek, T., Twohey, P., Back, G., Ng, A.Y., Engler, D.: From uncertainty to belief: inferring the specification within. In: Proc. OSDI 2006, pp. 161–176 (2006)
Lee, B.C., Brooks, D.M., de Supinski, B.R., Schulz, M., Singh, K., McKee, S.A.: Methods of inference and learning for performance modeling of parallel applications. In: Proceedings of the 12th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming (March 2007)
Li, Z., Zhou, Y.: PR-miner: automatically extracting implicit programming rules and detecting violations in large software code. In: Proc. ESEC/FSE 2005, pp. 306–315 (September 2005)
Liblit, B., Aiken, A., Zheng, A.X., Jordan, M.I.: Bug isolation via remote program sampling. In: PDLI 2003, pp. 141–154 (June 2003)
Nudd, G.R., Kerbyson, D.J., Papaefstathiou, E., Perry, S.C., Harper, J.S., Wilcox, D.V.: Pace - a toolset for the performance prediction of parallel and distributed systems. International Journal of High Performance Computing Applications 14(3), 228–251 (2000)
De Pauw, W., Kimelman, D., Vlissides, J.: Visualizing object-oriented software execution. In: Stasko, J., Domingue, J., Brown, M.H., Price, B.A. (eds.) Software Visualization: Programming as a Multimedia Experience, pp. 329–346. MIT Press (1998)
Reiss, S.P.: Working in the garden environment for conceptual programming. IEEE Software 4(6), 16–27 (1987)
Reiss, S.P.: FIELD: A Friendly Integrated Environment for Learning and Development. Kluwer (1994)
Reiss, S.P.: Event-based performance analysis. In: Proc. 11th IEEE Intl. Workshop on Program Comprehension, pp. 74–81 (2003)
Reiss, S.P.: Visualizing java in action. In: Proc. IEEE International Conference on Software Visualization, pp. 123–132 (2003)
Reiss, S.P.: A component model for internet-scale applications. In: Proc. ASE 2005, pp. 34–43 (November 2005)
Reiss, S.P.: Dynamic detection and visualization of software phases. In: Proc. Third International Workshop on Dynamic Analysis (May 2005)
Reiss, S.P.: Visualizing program execution using user abstractions. In: SOFTVIS 2006, pp. 125–134 (September 2006)
Reiss, S.P.: Visual representations of executing programs. Journal of Visual Languages and Computing 18(2), 126–148 (2007)
Reiss, S.P.: Tracking source locations. In: Proc. ICSE 2008, pp. 11–20 (May 2008)
Reiss, S.P.: Semantics-based code search. In: ICSE 2009, pp. 243–253 (May 2009)
Reiss, S.P.: Visualizing the java heap to detect memory problems. In: Proc. VISSOFT 2009, pp. 73–80 (September 2009)
Reiss, S.P., Karumuri, S.: Visualizing threads, transactions, and tasks. In: PASTE 2010, pp. 9–16 (June 2010)
Reiss, S.P., Renieris, M.: Languages for dynamic instrumentation. In: Proc. WODA 2003, ICSE Workshop on Dynamic Analysis, pp. 41–45 (2003)
Reiss, S.P., Renieris, M.: JOVE: Java as it happens. In: Proc. SoftVis 2005, pp. 115–124 (May 2005)
Renieris, M.: A Research Framework for Software-Fault Localization Tools. Ph.D. dissertation, Department of Computer Science, Brown University (2005)
Renieris, M., Reiss, S.P.: Fault localization with nearest neighbor queries. In: Proc. 18th Intl. Conf. on Automated Software Engineering, pp. 30–39 (2003)
Schumann, J., Mengshoel, O.J., Srivastava, A.N., Darwiche, A.: Towards software health management with bayesian networks. In: Proceedings of the FSE/SDP Workshop on Future of Software Engineering Research (FoSER 2010), pp. 331–336 (2010)
Thereska, E., Salmon, B., Strunk, J., Wachs, M., Abd-El-Malek, M., Lopex, J., Granger, G.R.: Stardust: tracking activity in a distributed sotrage system. In: Proc. SIGMETRICS 2006 (June 2006)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2012 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Reiss, S.P., Tarvo, A. (2012). What Is My Program Doing? Program Dynamics in Programmer’s Terms. In: Khurshid, S., Sen, K. (eds) Runtime Verification. RV 2011. Lecture Notes in Computer Science, vol 7186. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-29860-8_19
Download citation
DOI: https://doi.org/10.1007/978-3-642-29860-8_19
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-29859-2
Online ISBN: 978-3-642-29860-8
eBook Packages: Computer ScienceComputer Science (R0)