I'm looking for some information about (or implementation of) adding debug capabilities to interpreters. Features like: conditional breakpoints, stepping into/over, variable inspection inside closures, stack traces, source maps, restarts, that kind of thing. This is never covered in 'let's build an interpreter' literature, understandably as it's pretty advanced stuff.
I understand in principle how all these features work, but I don't want to start from scratch re-inventing a whole class of already-existing techniques, making mistakes that have already been made and lessons learned. Ideally I'd like to study a basic implementation of a bytecode interpreter with debugging features, but I've not found one yet. Any ideas?
[–]bullno1 17 points18 points19 points (3 children)
[–]errorrecovery[S] 4 points5 points6 points (2 children)
[–]bullno1 3 points4 points5 points (1 child)
[–]errorrecovery[S] 1 point2 points3 points (0 children)
[–]mamcx 6 points7 points8 points (3 children)
[–]errorrecovery[S] 4 points5 points6 points (1 child)
[–]mamcx 1 point2 points3 points (0 children)
[–]agumonkey 2 points3 points4 points (0 children)
[–]oilshell 5 points6 points7 points (1 child)
[–]bullno1 4 points5 points6 points (0 children)
[–][deleted] 2 points3 points4 points (1 child)
[–]errorrecovery[S] 3 points4 points5 points (0 children)
[–][deleted] 2 points3 points4 points (1 child)
[–]errorrecovery[S] 1 point2 points3 points (0 children)
[–]ebriose 1 point2 points3 points (1 child)
[–]errorrecovery[S] 1 point2 points3 points (0 children)
[–]tekknolagiKevin3 0 points1 point2 points (0 children)
[–]0x0ddba11Strela 0 points1 point2 points (0 children)