Open
Description
- Roles: System learner, system expert
- Goals:
- Retrace the matching process of a string against a regular expression
- Understand the reason for backtracking in the matching process
- Program in the debugger to fix a bug/add a new feature and explore the updated behavior
- Examples:
- Survey all sends to/invocations of
#matchAgainst:
in the matcher - Browse invocations of
RxMatcher >> #matchAgainstMarkerAt:nextLink:
- In
RxMatcher >> #matchAgainstLookbehind:positive:nextLink:
, remove a particular#position:
send
- Survey all sends to/invocations of
- Problems:
- Once you missed an important detail, going back is impossible without restoring the prior state of the matcher's source stream manually.
- At one time, you can only see the current route of links, excluding all past/future routes before or after backtracking or checking lookaround links.
- After editing a method that has already been executed, the debugging session needs to be restarted and manually navigated to the previous position.
- Possible solutions:
- step into details later in the context of the original event state
- :
- display the entire trace at once
- filter stack frames by selector (e.g.,
#matchAgainst:
) - filter stack frames by return value (e.g.,
false
)
- different accept options in the debugger:
- reevaluate trace and select the equivalent stack frame
- reevaluate from the current stack frame
- open updated trace in a new window