Coder Social home page Coder Social logo

the-art-of-debugging's Introduction

The Art of Debugging

This guide will teach you how to:

  1. Debug normal issues really fast
  2. Make complicated issues possible to debug

footnote: adapted from Perl's slogan: "Easy things should be easy and hard things should be possible".

This is a work-in-progress collection of methodologies and copy-n-paste recipes for successful debugging of simple and complicated software problems. Some sections are quite complete, while other will be finished at a later stage, and yet other haven't been started.

Intro

I have been developing software since 1995 and a lot of this work involved debugging. Over the years I developed a various efficient methodologies for discovering the source of the problem, which is the most difficult stage to solving it. Since after the problem is understood, typically the resolution is relatively easy.

Every so often someone I would be debugging a problem with would suggest to share my approaches with the world. I always said that it'd be too difficult to generalize, but recently the planted seed seems to have sprouted and so in the following documents I will try to share some of the insights to ease this very difficult at times process.

Writing about debugging in the void is very difficult and since I haven't been saving use cases, it will take some time to build this up, so expect these pages to be a Work In Progress (WIP) for many moons. But hopefully some ideas could be relayed to you sooner than later, and they would help to ease your burden of debugging in your work and play projects.

Table of Contents

  1. Fast Debugging Methodology

  2. Debugging Compiled Programs - gdb, ldd, nm, LD_LIBRARY_PATH, LD_PRELOAD

  3. Debugging Python - py-spy, paths, auto-print

  4. Unix Tools For Debugging - bash, strace, make, prompt, nohup

  5. Debugging Machine Learning Projects (external)

Contributing

If you found a bug, typo or would like to propose an improvement please don't hesitate to open an Issue or contribute a PR.

License

The content of this site is distributed under Attribution-ShareAlike 4.0 International.

My repositories map

Machine Learning: ML Engineering | ML ways | Porting

Guides: The Art of Debugging

Applications: ipyexperiments

Tools and Cheatsheets: bash | conda | git | jupyter-notebook | make | python | tensorboard | unix

the-art-of-debugging's People

Contributors

stas00 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.