compiler: improve debugging experience #2434
Draft
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Currently one instruction can correspond to multiple sequence points
because of inlining. This leads to a bad user experience as only
the last one is used. In this commit we create a sequence point for each
inlined call and also make sure that each time a new sequence point is
created the corresponding opcode can easily be seen in code.
The NOPs increase contract size, but not to a large degree. Other
solutions considered:
debugging experience if deployed contract differs from the debugged
one.
provided for a single instruction they can be used to emulate
non-inline behaviour with pseudo-NOPs. I believe this is what windows
debugger does (the last paragraph https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/debugging-optimized-code-and-inline-functions-external )
function in the NEF itself. This should be done for each called
instance and would also create overlapping opcode ranges for
the enclosing function. However this approach can also ensure
consistent values view for inlined function parameters.
Signed-off-by: Evgeniy Stratonikov [email protected]