You might consider using a VM with 'save-points'. You run the program (in a debugger/ida/what have you) to a certain point (logical point would be if/ifelse/else statements, etc) and save the VM state. Once you've saved, you continue. If you find the path you've taken isn't what you are after, you can reload a previous save point and start over, trying a different path the next time. <br>
<br>This is also somewhat useful if you're trying to debug an error that happens deep inside of a program, so you can continually jump to the point right before the error happens, instead of needing to run through the entire program each time it crashes. Just beware of tunnel vision. <br>