Many years ago, being a developer involved punching holes in cards. The process was difficult and tedious. Then things got better, and you could start typing your code straight into the computer. But you’d still rely on print statements and log output to understand what was going on, which wasn’t always possible if you hadn’t or couldn’t add the output text.
At Web3 Labs we’ve always had a focus on Java and JVM developers, starting with our Web3j open source library. And as developers on a modern mainstream language, we’ve always been spoiled with fantastic tooling and developer experiences. We’ve been able to connect to running processes, inspect every part of the VM, and see exactly what the code was doing.
Doing Solidity smart contract development feels a bit like going back in time, to a place where those tools have been removed from us. Even if everything relating to smart contract execution is available on a public, private or local blockchain node, we haven’t had the tooling to make use of this. For a long time, we couldn’t even easily do any form of logging in Solidity.
Part of our mission at Web3 Labs is to empower developers and businesses to accelerate their adoption of decentralised systems, by providing the best Web3 technology and services. It therefore makes perfect sense for us to invest in building a Solidity debugger, and this is what we’re now proud to announce.
Available now, at https://github.com/web3j/intellij-solidity-debugger, is our Solidity debugger plugin for IntelliJ. If you’re a Java developer, you’re already likely familiar with IntelliJ and the fantastic tooling it provides for Java and JVM debugging. With this plugin, similar functionality is now available within the IDE for setting breakpoints, inspecting memory, and stepping through Solidity smart contract code. All as part of an integrated experience within IntelliJ through our debugger plugin.
Are we finished? No, more can and will be done, but we feel it has reached a level of maturity where it makes sense for us to share it as open source software with the wider community.
We would appreciate your feedback and help to take this forward!