Socket
Socket
Sign inDemoInstall

@truffle/debugger

Package Overview
Dependencies
15
Maintainers
9
Versions
287
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    @truffle/debugger

Core functionality for debugging Solidity files built with Truffle


Version published
Weekly downloads
13K
decreased by-6.37%
Maintainers
9
Created
Weekly downloads
 

Readme

Source

@truffle/debugger

Portable Solidity debugger library, for use with or without Truffle.

Debugger in Action

Features:

  • Solidity stepping and breakpoints
  • Variable inspection
  • Watch expressions
  • and more!

API Documentation

API Documentation for this library can be found at trufflesuite.github.io/truffle-debugger.

Library Usage

:warning: This documentation is currently a work in progress. Please see the reference integration provided by the truffle debug command.

Required Parameters

To start a @truffle/debugger session, you'll need the following:

  • txHash - A transaction hash (prefixed with 0x), for the transaction to debug
  • provider - A web3 provider instance (see web3.js)
  • contracts - An array of contract objects, with the following properties:
    • contractName - The name of the contract
    • source - The full Solidity source code
    • sourcePath - (optional) the path to the Solidity file on disk
    • ast - The Solidity compiler's output AST (new style, not legacyAST)
    • binary - 0x-prefixed string with the binary used to create a contract instance
    • sourceMap - The Solidity compiler output source map for the creation binary
    • deployedBinary - 0x-prefixed string with the on-chain binary for a contract instance
    • deployedSourceMap - The source map corresponding to the on-chain binary (from the Solidity compiler)

Optionally (and recommended), you can also provide a files argument:

  • files - An array of sourcePaths representing file indexes (from solc or @truffle/compile-solidity)

Invocation

  1. Start the debugger session by constructing a Debugger instance with .forTx() and then .connect() to it:
import Debugger from "@truffle/debugger";

let bugger = await Debugger
  .forTx(txHash, { contracts, files, provider });

let session = bugger.connect();
  1. Resolve the session's ready() promise:
await session.ready();
  1. Use the provided public methods on the session instance in order to step through the trace for the transaction:
session.stepNext();
session.stepOver();
session.stepInto();
  1. Access data provided by the debugger via the session.view() interface, and the provided selectors:
let { ast, data, evm, solidity, trace } = Debugger.selectors;

let variables = session.view(data.current.identifiers.native);
let sourceRange = session.view(solidity.current.sourceRange);

Useful API Docs References

Contributing

It's our goal that this library should serve as a reliable and well-maintained tool for the Solidity ecosystem. Ultimately, we hope to support all language features and meet the varied requirements of a mature debugging library.

We believe that a good Solidity debugger belongs to the community. We welcome, with our most humble gratitude, any and all community efforts in bringing this debugger closer to that goal. If you find something broken or missing, please open an issue!

Some other ideas for how to get involved:

  • Bug fix PRs
  • Documentation improvements
  • Additional tests - unit tests and integration
  • Technical discussion (ways to improve architecture, etc.)

Thank you for all the continued support. :bow:

Keywords

FAQs

Last updated on 13 Sep 2023

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc