Not working python breakpoints in C thread in pycharm or eclipse+pydev Not working python breakpoints in C thread in pycharm or eclipse+pydev multithreading multithreading

Not working python breakpoints in C thread in pycharm or eclipse+pydev


You have to setup the debugger machinery for it to work on non-python threads (this is done automatically when a Python thread is created, but when you create a thread for which Python doesn't have any creation hook, you have to do it yourself) -- note that for some frameworks -- such as QThread/Gevent -- things are monkey patched so that we know about the initialization and start the debugger, but for other frameworks you have to do it yourself.

To do that, after starting the thread you have to call:

import pydevdpydevd.settrace(suspend=False, trace_only_current_thread=True)

Note that if you had put suspend=True, it'd simulate a manual breakpoint and would stop at that point of the code.


This is a follow-up to @fabio-zadrozny answer.

Here is a mixin I've created that my class (which gets callbacks from a C-thread) inherits from.

class TracingMixing(object):    """The callbacks in the FUSE Filesystem are C threads and breakpoints don't work normally.       This mixin adds callbacks to every function call so that we can breakpoint them."""    def __call__(self, op, path, *args):        pydevd.settrace(suspend=False, trace_only_current_thread=True, patch_multiprocessing=True)        return getattr(self, op)(path, *args)