Peeter Joot's Blog.

Math, physics, perl, and programming obscurity.

Posts Tagged ‘debugger’

a handy multithreading debugging technique: a local variable controlled semi-infinite loop.

Posted by peeterjoot on November 17, 2011

I had a three thread timing hole scenerio that I wanted to confirm with the debugger. Adding blocks of code to selected points like this turned out to be really handy:


   {
      volatile int loop = 1 ;
      while (loop)
      {
         loop = 1 ;

         sleep(1) ;
      }
   }

Because the variable loop is local, I could have two different functions paused where I wanted them, and once I break on the sleep line, can let each go with a debugger command like so at exactly the right point in time

(gdb) p loop=0

(assigns a value of zero to the loop variable after switching to the thread of interest). The gdb ‘set scheduler-locking on/off’ and ‘info threads’ ‘thread N’ commands are also very handy for this sort of race condition debugging (this one was actually debugged by code inspection, but I wanted to see it in action to confirm that I had it right).

I suppose that I could have done this with a thread specific breakpoint. I wonder if that’s also possible (probably). I’ll have to try that next time, but hopefully I don’t have to look at race conditions like today’s for a quite a while!

Posted in C/C++ development and debugging. | Tagged: , , , | Leave a Comment »

 
Follow

Get every new post delivered to your Inbox.