All breaking is going to be on the function level
(at least for now).
but most things are functions.
Here are break points we should have.
[x] Break on Function
Any of its methods
[x] Break on Method
Just one method, should be a matter of constraining the overdubbed types.
[ ] Break on every function that has a particular object being passed in (Watchpoints)
this lets you trace the life of a object
Can be made to work by overdubbing every method to check the object_id of all it's args
This will make everything slow, so probably make a custom Session type for it (requires #2)
[x] Break on entry tto function declared at file + line number.
Basically we need to find ou which function we are in for a particular line number.
If just doing declaration line this is pretty easy, can use names on the module, then search all the method tables for methods that occur on that line.
harder is if we accept any line with in the file. I think Revise.jl might track this. Alternatively coukld use same strat as before, but instead of looking for line equality look for the closes declatation line that occurrs after.
[x] Break on call location given by file and line number
this is hard.
[x] Break on every function call
This would let us implement StepInto as a command in the UI, by setting it before the metthod is called.
For this to be useful need to be able to stop stepping, so this needs #8
This would also let us implement StepNext as a command in the UI, by setting it after the method is called (need #5)
All breaking is going to be on the function level (at least for now). but most things are functions.
Here are break points we should have.
object_id
of all it's argsnames
on the module, then search all the method tables for methods that occur on that line.StepInto
as a command in the UI, by setting it before the metthod is called.StepNext
as a command in the UI, by setting it after the method is called (need #5)