python-hunter icon indicating copy to clipboard operation
python-hunter copied to clipboard

Is it possible to start debugger on a specific line?

Open max-arnold opened this issue 1 year ago • 2 comments

Trying it like this:

PYTHONHUNTER='Q(kind="line",lineno=253,module_in=["mymodule"],action=Debugger())'

But the debugger starts not at the specified line (which is a variable assignment), but below it in the next function call.

Is that expected?

max-arnold avatar Dec 05 '23 06:12 max-arnold

Yes, it is, because tracing in general is post-facto, the action will be called after the code being traced has been executed.

Is there a specific problem you're trying to solve there? Seems like you could give more context...

ionelmc avatar Dec 06 '23 13:12 ionelmc

I'm trying to invoke pdb (for step-by step debugging and altering some variables) at specific line without editing the source code. The code fragment looks like this:

   def __init__(...
    ):
        """
        A docstring
        """

        self.parent_loader = None   #### TARGET LINE (253) ####
        self.inject_globals = {}
        self.pack = {} if pack is None else pack
        for i in self.pack:
            if isinstance(self.pack[i], salt.loader.context.NamedLoaderContext):
                self.pack[i] = self.pack[i].value()
        if opts is None:
            opts = {}
        opts = copy.deepcopy(opts)

But the debugger gets invoked in stdlib inside of the next (nearest) call:

-> def deepcopy(x, memo=None, _nil=[]):
(Pdb)

max-arnold avatar Dec 06 '23 16:12 max-arnold