{"id":13792631,"url":"https://github.com/fergarrui/ethereum-graph-debugger","last_synced_at":"2025-04-06T14:11:37.512Z","repository":{"id":37268871,"uuid":"136078225","full_name":"fergarrui/ethereum-graph-debugger","owner":"fergarrui","description":"Ethereum solidity graph plain debugger. To have the whole picture when debugging.","archived":false,"fork":false,"pushed_at":"2023-03-03T11:36:00.000Z","size":7085,"stargazers_count":347,"open_issues_count":21,"forks_count":33,"subscribers_count":11,"default_branch":"master","last_synced_at":"2024-02-14T17:31:15.551Z","etag":null,"topics":["blockchain","bytecode","control-flow-graph","debug","debugger","ethereum","ethereum-contract","ethereum-debug","ethereum-debugger","ethereum-debugging","ethereum-graph-debugger","solidity","solidity-debug","solidity-debugging","solidity-language","trace","transaction"],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fergarrui.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-06-04T20:21:02.000Z","updated_at":"2024-06-19T02:47:08.007Z","dependencies_parsed_at":"2024-06-19T02:46:46.867Z","dependency_job_id":"4b846987-ede0-41b3-bce6-fd4f6dc021c2","html_url":"https://github.com/fergarrui/ethereum-graph-debugger","commit_stats":null,"previous_names":[],"tags_count":22,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fergarrui%2Fethereum-graph-debugger","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fergarrui%2Fethereum-graph-debugger/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fergarrui%2Fethereum-graph-debugger/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fergarrui%2Fethereum-graph-debugger/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fergarrui","download_url":"https://codeload.github.com/fergarrui/ethereum-graph-debugger/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247492557,"owners_count":20947545,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["blockchain","bytecode","control-flow-graph","debug","debugger","ethereum","ethereum-contract","ethereum-debug","ethereum-debugger","ethereum-debugging","ethereum-graph-debugger","solidity","solidity-debug","solidity-debugging","solidity-language","trace","transaction"],"created_at":"2024-08-03T22:01:14.536Z","updated_at":"2025-04-06T14:11:37.493Z","avatar_url":"https://github.com/fergarrui.png","language":"TypeScript","funding_links":[],"categories":["Tools","Roadmap"],"sub_categories":["Visualization"],"readme":"# ethereum-graph-debugger\n\n![EGD Demo GIF](./egd_demo_gif.gif)\n\nGraphical EVM debugger. This debugger takes a different approach to traditional debugging. Instead of stepping through the execution of the program, it shows the whole program control flow graph and the actual execution of the transaction highlighted in red. In this way, the developer can see the whole picture and jump where it is necessary in a quick and graphical way.\n\nThis project was rewritten with a frontend made by [Swolfeyes](https://github.com/Swolfeyes) and backend by [fergarrui](https://github.com/fergarrui)\n\n[Development repository](https://github.com/fergarrui/ethereum-graph-debugger-ts) was archived, marked as read-only and moved here, to the main repo.\n\n# Existing tools\nThere are already tools that allow you to debug Ethereum transactions (Solidity):\n\n* [Remix](https://remix.ethereum.org)\n* [Truffle](http://truffleframework.com)\n* [Tenderly](https://tenderly.dev)\n\n# Usage\n\n### Download\n\nUse release link:\n\n  * [v3.6.0](https://github.com/fergarrui/ethereum-graph-debugger/releases/tag/v3.6.0)\n\nIf you want to use master (it can be more unstable), clone and start the application\n\nFor the first time:\n```\n  git clone https://github.com/fergarrui/ethereum-graph-debugger.git\n  cd ethereum-graph-debugger\n  npm install\n  npm start\n```\nSubsequents just:\n\n```\nnpm start\n```\n\nGo to localhost:9090\n\n### With docker\n\n`docker-compose up`\n\nGo to localhost:9090\n\nAdd contracts to `./contracts` (you will need to create the directory) and empty string at the 'Load contracts from URI' form.\n\n### Use\n\n  * Go to localhost:9090\n  * Enter the path where the contracts are in the input text (it will load Solidity contracts recursively)\n  * A tab per file found will be created\n  * Under a file tab there are a few actions using the left menu\n\n### How to debug bytecode (with no source code) [Experimental]\n\n  * Create a file with extension `.evm` and paste the runtime bytecode (:warning: important: with `0x` as prefix)\n    * For example: create a file named: `contract1.evm` with content `0x60806040`\n  * Scan the directory as described above\n  * You won't get source code mappings when clicking in operations of the CFG\n\n# Features\n\n  * **Now interactive** :star2:: it has a sepparate frontend and API instead of building a static HTML file like in earlier versions\n  * **Control flow graph**: the CFG can be built without debugging a transaction.\n  * **Disassembler**: just disassembled opcodes can be seen, from runtime and constructor\n  * **Source mapping**: snippet of code related to the selected instruction is highlighted in the editor left panel\n  * **Debug transaction**: a transaction can be debugged using the contract's CFG and the execution trace\n  * **Storage viewer**: Storage layout and values can be retrieved (including dynamic arrays and mappings :exclamation: )\n  * Supports contracts calls. All contracts involved in the transaction can be debugged (going to the caller/called tab to see the contract-specific trace)\n  * EVM state in transaction: it is shown below the editor when selecting an opcode present in the execution trace of the provided transaction hash\n  * **Settings**: right now, there are settings to point to a different chain (by default it connects to http://127.0.0.1:8545) and basic authentication can be configured, so the RPC endpoint can be accessed if authentication is needed (to be compatible with platforms like [Kaleido](http://kaleido.io))\n  * When building the CFG a basic dynamic execution is made to calculate jumps and to remove most of orphan blocks (this will be improved in the future, probably with SymExec)\n  * To debug directly bytecode, use `.evm` extension files\n  * Constructor CFG is supported\n  * Debugging constructor transactions is supported\n\n# Limitations/Considerations\n\n  * Only Solidity is supported at the moment\n  * ~~Only runtime debugging is supported for now (no constructor)~~\n  * You must run it against a node that supports `debug_traceTransaction`, like Geth or Ganache, therefore, Infura is not supported\n  * It was rewritten, so new bugs may appear\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffergarrui%2Fethereum-graph-debugger","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffergarrui%2Fethereum-graph-debugger","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffergarrui%2Fethereum-graph-debugger/lists"}