neo-project / neo-debugger

Neo Smart Contract Debugger for Visual Studio Code
https://marketplace.visualstudio.com/items?itemName=ngd-seattle.neo-contract-debug
MIT License
24 stars 17 forks source link

change handling of stepping into function that has no debug information #190

Open ixje opened 1 year ago

ixje commented 1 year ago

I think this is worthy of a discussion on how to handle this. Right now when trying to step into a function that has no debug symbols, the debugging will simply go to the first function it can find debug information for. To illustrate

def util_func(arg):
   return arg * 2

def call_inner():
   x = 1
   y = util_func(x)
   return y

def entry_point():
   call_inner()

Assume we have debug information for entry_point and util_func, but not for call_inner. We put a break point inside entry_point() on call_inner(). Now when trying to step into call_inner you'll actually end up in util_func instead. If you don't realize this is the logic then it can be quite confusing to end up in a function you don't expect.

I'm thinking we should at least give a warning about missing debug symbols and then maybe a choice what to do? Skip over or the current behaviour of first function it can find.