Skip to main content

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...

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Subscribe and save

Springer+ Basic
$34.99 /Month
  • Get 10 units per month
  • Download Article/Chapter or eBook
  • 1 Unit = 1 Article or 1 Chapter
  • Cancel anytime
Subscribe now

Buy Now

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Bibliography

  1. Allinea DDT (2010) http://www.allinea.com. Accessed 15 Nov 2010

  2. Arnold DC, Pack GD, Miller BP (2006) Tree-based overlay networks for scalable applications. International Parallel and Distributed Processing Symposium, Long Beach, CA

    Google Scholar 

  3. 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

    Google Scholar 

  4. Copperman M, Thomas J (1995) Poor man’s watchpoints. SIGPLAN Notices 30(1):37–44

    Google Scholar 

  5. DiMarzio JF (2007) The debugger’s handbook. Auerbach Publications. Boston, MA

    MATH  Google Scholar 

  6. Gottbrath C (2008) Reverse debugging with the TotalView debugger. In: Cray Users Group Conference Proceedings, Helsinki, Finland

    Google Scholar 

  7. 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

    Google Scholar 

  8. Hovemeyer D, Pugh W (2004) Finding bugs is easy. SIGPLAN Notices 39(12):92–106

    Google Scholar 

  9. Intel Parallel Inspector (2010) http://software.intel.com/en-us/articles/intel-parallel-inspector/. Accessed 15 Nov 2010

  10. Kacsuk P (2000) Systematic macrostep debugging of message passing parallel programs. Future Gen Comput Sys 16(6):609–624

    Google Scholar 

  11. Kidwell PA (1998) Stalking the elusive computer bug. IEEE Ann Hist Comput 20(4):5–9

    Google Scholar 

  12. 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

    Google Scholar 

  13. 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

    Google Scholar 

  14. 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

    Google Scholar 

  15. 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

    Google Scholar 

  16. 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

  17. 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

    Google Scholar 

  18. Krawczyk H, Wiszniewski B (1998) Analysis and testing of distributed software applications. Taylor & Francis, Bristol

    Google Scholar 

  19. LeBlanc TJ, Mellor-Crummey JM (1987) Debugging parallel programs with instant replay. IEEE Trans Comput 36:471–482

    Google Scholar 

  20. 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

    Google Scholar 

  21. 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

    Google Scholar 

  22. McDowell CE, Helmbold DP (1989) Debugging concurrent programs. ACM Comput Surv 21(4):593–622

    Google Scholar 

  23. Message Passing Interface Forum: MPI: a message-passing interface standard (1995) http://www.mpi-forum.org/docs/mpi-10.ps. Accessed 15 Nov 2010

  24. 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

  25. Myers GJ, Sandler C, Badgett T, Thomas TM (2004) The art of software testing, 2nd edn. Wiley, New Jersey

    Google Scholar 

  26. Nagel WE, Arnold A, Weber M, Hoppe HC, Solchenbach K (1996) VAMPIR: visualization and analysis of MPI resources. Supercomputer 12:69–80

    Google Scholar 

  27. PTP – Parallel Tools Platform (2010) http://www.eclipse.org/ptp. Accessed 15 Nov 2010

  28. Rosenberg JB (1996) How debuggers work: algorithms, data structures, and architecture. Wiley, New York

    Google Scholar 

  29. Seward J, Nethercote N, Weidendorfer J (2008) Valgrind 3.3 - advanced debugging and profiling for GNU/Linux applications. Network Theory Ltd, Bristol

    Google Scholar 

  30. Stallman R, Pesch R, Shebs S et al (2010) Debugging with GDB, 9th edn. Free software foundation, Boston

    Google Scholar 

  31. Stitt M (1992) Debugging – creative techniques and tools for software repair. Wiley Professional Computing Series. Wiley, New York

    Google Scholar 

  32. TotalView (2010) http://www.totalviewtech.com. Accessed 15 Nov 2010

  33. 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

    Google Scholar 

  34. Von Kaenel PA (1987) A debugger tutorial. SIGCSE Bulletin 19(4):40–44

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints 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

Publish with us

Policies and ethics