Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

make it easier to debug the compiler from script #1229

Open
wants to merge 4 commits into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions src/Neo.Compiler.CSharp/Diagnostic/DebugInstruction.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
using System.Runtime.CompilerServices;
using Neo.VM;

namespace Neo.Compiler;

internal partial class MethodConvert
{
void InstructionDebug([CallerLineNumber] int lineNumber = 0, [CallerMemberName] string caller = null)

Check warning on line 8 in src/Neo.Compiler.CSharp/Diagnostic/DebugInstruction.cs

View workflow job for this annotation

GitHub Actions / Test

Cannot convert null literal to non-nullable reference type.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why not increase the DebugInfo information?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I dont really know how to use DebugInfo~~ can you please give me an example how to debug with debuginfo?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Well, checked that debuginfo is not what i want, it build relationship betweeen opcode and source code, while what i want to know is where the opcode is added in the compiler....

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let me check if i can update debuginfo ~~

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Well, checked that debuginfo is not what i want, it build relationship betweeen opcode and source code, while what i want to know is where the opcode is added in the compiler....

DebugInfo have a reference between the source and the script

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

not the source, i need the compiler location, instead the contract source code location, studing on adding it to debuginfo.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Have tried to do so, but it is much harder to ahiceve that since the optimizer changes the debuginfo in multiple places that is hard to trace, yet what i want to achieve can be done easily.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

But do you want to use this only for you, or do you have plans to add this call everywhere, if it's for you, I'm ok like this, otherwise, I can try to do it in DebugInfo

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

if it can be added to DebugInfo and shown in the artifact, it would be great, cause i need to know where the opcode is being added to the script in the compiler. If that is hard to implement, this one would be the great option since i can check it in the script itself.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let me help you

{
Push("DEBUG: at line " + lineNumber + " (" + caller + ")");
AddInstruction(OpCode.DROP);
}
}
Loading