Definition
Debugging and testing are integral parts of the software development process, which provides a model for the development of software products from the initial planning to deployment and maintenance. However, debugging and testing are, although closely related, two completely different tasks which must be clearly distinguished. Software testing is used to verify the reliability and functionality of software products and individual components. This is accomplished by checking their adherence to specified requirements, thus allowing an assessment of the quality of software. If any discrepancies occur during the testing phase, debugging is used to track the reasons why the software fails and to correct the mistakes. Concurrency in applications adds additional error sources and effects, making debugging parallel programs a challenging task. As such, parallel program debugging has to deal with increased complexity, large amounts of data, and effects like race conditions and...
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Bibliography
Allinea DDT (2010) http://www.allinea.com. Accessed 15 Nov 2010
Arnold DC, Pack GD, Miller BP (2006) Tree-based overlay networks for scalable applications. International Parallel and Distributed Processing Symposium, Long Beach, CA
Arnold DC, Ahn DH, de Supinski BR, Lee GL, Miller BP, Schulz M (2007) Stack trace analysis for large scale debugging. International Parallel and Distributed Processing Symposium, Long Beach, CA
Copperman M, Thomas J (1995) Poor man’s watchpoints. SIGPLAN Notices 30(1):37–44
DiMarzio JF (2007) The debugger’s handbook. Auerbach Publications. Boston, MA
Gottbrath C (2008) Reverse debugging with the TotalView debugger. In: Cray Users Group Conference Proceedings, Helsinki, Finland
Hilbrich T, Schulz M, de Supinski BR, Müller MS (2009) MUST: a scalable approach to runtime error detection in MPI programs. In: Müller M, Resch M, Schulz A, Nagel W (eds) Tools for high performance computing, proceedings of the 3rd international workshop on parallel tools for high performance computing, Dresden, September 2009. ZIH, Springer, Berlin
Hovemeyer D, Pugh W (2004) Finding bugs is easy. SIGPLAN Notices 39(12):92–106
Intel Parallel Inspector (2010) http://software.intel.com/en-us/articles/intel-parallel-inspector/. Accessed 15 Nov 2010
Kacsuk P (2000) Systematic macrostep debugging of message passing parallel programs. Future Gen Comput Sys 16(6):609–624
Kidwell PA (1998) Stalking the elusive computer bug. IEEE Ann Hist Comput 20(4):5–9
Klausecker C, Köckerbauer T, Preissl R, Kranzlmüller D (2008) Debugging MPI programs on the grid using g-eclipse. In: Resch MM, Keller R, Himmler V, Krammer B, Schulz A (eds) Tools for high performance computing, proceedings of the 2nd international workshop on parallel tools for high performance computing, Stuttgart, July 2008. HLRS, Springer, Berlin
Knüpfer A, Brendel R, Brunst H, Mix H, Nagel WE (2006) Introducing the open trace format (OTF). In: Vassil A, van Albada G, Sloot P, Dongarra J (eds) Computational science ICCS 2006, vol 3992 of lecture notes in computer science. Springer, Berlin, pp 526–533
Köckerbauer T, Klausecker C, Kranzlmüller D (2010) Scalable parallel debugging with g-eclipse. In: Müller MS, Resch MM, Schulz A, Nagel WE (eds) Tools for high performance computing 2009. Springer, Berlin, pp 115–123
Krammer B, Bidmon K, Müller MS, Resch MM (2004) MARMOT: an MPI analysis and checking tool. In: Joubert GR, Nagel WE, Peters FJ, Walter WV (eds) Parallel computing - software technology, algorithms, architectures and applications, volume 13 of Advances in parallel computing, North-Holland, Amsterdam, pp 493–500
Kranzlmüller D (2000) Event graph analysis for debugging massively parallel programs. PhD thesis, GUP Linz, Joh. Kepler University Linz, Austria. http://www.mnm-eam.org/∼kranzlm/documents/phd.pdf. Accessed 15 Nov 2010
Kranzlmüller D, Rimnac A (2003) Parallel program debugging with MAD: a practical approach. In: Proceedings of the 2003 international conference on computational science, ICCS’03, Springer, Berlin, pp 201–210
Krawczyk H, Wiszniewski B (1998) Analysis and testing of distributed software applications. Taylor & Francis, Bristol
LeBlanc TJ, Mellor-Crummey JM (1987) Debugging parallel programs with instant replay. IEEE Trans Comput 36:471–482
LeDoux CH, Parker DS (1985) Saving traces for Ada debugging. In: Proceedings of the 1985 annual ACM SIGAda international conference on Ada, SIGAda ’85. Cambridge University Press, New York, pp 97–108
Lee GL, Ahn DH, Arnold DC, de Supinski BR, Legendre M, Miller BP, Schulz M, Liblit B (2008) Lessons learned at 208K: towards debugging millions of cores. SC2008, Austin
McDowell CE, Helmbold DP (1989) Debugging concurrent programs. ACM Comput Surv 21(4):593–622
Message Passing Interface Forum: MPI: a message-passing interface standard (1995) http://www.mpi-forum.org/docs/mpi-10.ps. Accessed 15 Nov 2010
Message Passing Interface Forum: MPI-2: extensions to the message-passing interface (1997) http://www.mpi-forum.org/docs/mpi-20.ps. Accessed 15 Nov 2010
Myers GJ, Sandler C, Badgett T, Thomas TM (2004) The art of software testing, 2nd edn. Wiley, New Jersey
Nagel WE, Arnold A, Weber M, Hoppe HC, Solchenbach K (1996) VAMPIR: visualization and analysis of MPI resources. Supercomputer 12:69–80
PTP – Parallel Tools Platform (2010) http://www.eclipse.org/ptp. Accessed 15 Nov 2010
Rosenberg JB (1996) How debuggers work: algorithms, data structures, and architecture. Wiley, New York
Seward J, Nethercote N, Weidendorfer J (2008) Valgrind 3.3 - advanced debugging and profiling for GNU/Linux applications. Network Theory Ltd, Bristol
Stallman R, Pesch R, Shebs S et al (2010) Debugging with GDB, 9th edn. Free software foundation, Boston
Stitt M (1992) Debugging – creative techniques and tools for software repair. Wiley Professional Computing Series. Wiley, New York
TotalView (2010) http://www.totalviewtech.com. Accessed 15 Nov 2010
Vetter JS, de Supinski BR (2000) Dynamic software testing of MPI applications with umpire. In: Proceedings of the 2000 ACM/IEEE conference on Supercomputing (CDROM), Supercomputing ’00. IEEE Computer Society, Washington
Von Kaenel PA (1987) A debugger tutorial. SIGCSE Bulletin 19(4):40–44
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2011 Springer Science+Business Media, LLC
About this entry
Cite this entry
Klausecker, C., Kranzlmüller, D. (2011). Debugging. In: Padua, D. (eds) Encyclopedia of Parallel Computing. Springer, Boston, MA. https://doi.org/10.1007/978-0-387-09766-4_135
Download citation
DOI: https://doi.org/10.1007/978-0-387-09766-4_135
Publisher Name: Springer, Boston, MA
Print ISBN: 978-0-387-09765-7
Online ISBN: 978-0-387-09766-4
eBook Packages: Computer ScienceReference Module Computer Science and Engineering