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

Idea: a more powerful trace client

Open vitrun opened this issue 3 years ago • 4 comments

Current trace client is a simple wrapper of eval

eval('hunter.trace({})'.format(options))

It works for simple or medium complex situations, such as:

  • hunter-trace -p 34313 stdlib=False
  • hunter-trace -p 34313 "hunter.Q(lambda event: event.locals.get(\"msg\") == \"ha\")"

However, it comes short when import or customization is required before hunter.trace.

from hunter import trace, Q, Debugger
from pdb import Pdb

trace(
    Q(
        # show code that contains "mumbo.jumbo" on the current line
        lambda event: event.locals.get("mumbo") == "jumbo",
        # and it's not in Python's stdlib
        stdlib=False,
        # and it contains "mumbo" on the current line
        source__contains="mumbo",
        action=Debugger(klass=Pdb)
    )
)

With due consideration of safety, it should be allowed to eval a whole snippet of codes.

vitrun avatar Sep 27 '22 13:09 vitrun

Try hunter-trace -p 123123 'action=hunter.Debugger(klass=__import__("pdb").Pdb)'.

Note that Pdb won't work as you expect anyway (won't be attached to the terminal of hunter-trace - a different issue).

ionelmc avatar Sep 27 '22 13:09 ionelmc

Wouldn't it be nice to support hunter-trace -p 123123 -f CUSTOM_FILTER_ACTION.py?

vitrun avatar Sep 28 '22 03:09 vitrun

won't be attached to the terminal of hunter-trace - a different issue

Can we make it attached to hunter-trace, say, by using rpdb?

vitrun avatar Sep 28 '22 06:09 vitrun

It could be possible, both ideas. Just need time to implement.

ionelmc avatar Sep 29 '22 10:09 ionelmc