{"id":13648818,"url":"https://github.com/gimli-rs/ddbug","last_synced_at":"2025-05-16T10:05:41.845Z","repository":{"id":37773995,"uuid":"73882125","full_name":"gimli-rs/ddbug","owner":"gimli-rs","description":"Display debugging information","archived":false,"fork":false,"pushed_at":"2025-03-11T12:17:03.000Z","size":1235,"stargazers_count":133,"open_issues_count":11,"forks_count":17,"subscribers_count":8,"default_branch":"master","last_synced_at":"2025-05-16T10:04:26.437Z","etag":null,"topics":["debugging","dwarf"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gimli-rs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE-APACHE","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,"zenodo":null}},"created_at":"2016-11-16T03:55:54.000Z","updated_at":"2025-04-22T20:04:57.000Z","dependencies_parsed_at":"2024-01-14T10:59:39.118Z","dependency_job_id":"77f1f91f-6733-451f-b10d-e1ebda8ca143","html_url":"https://github.com/gimli-rs/ddbug","commit_stats":null,"previous_names":["philipc/ddbug"],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gimli-rs%2Fddbug","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gimli-rs%2Fddbug/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gimli-rs%2Fddbug/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gimli-rs%2Fddbug/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gimli-rs","download_url":"https://codeload.github.com/gimli-rs/ddbug/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254509476,"owners_count":22082891,"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":["debugging","dwarf"],"created_at":"2024-08-02T01:04:34.163Z","updated_at":"2025-05-16T10:05:41.796Z","avatar_url":"https://github.com/gimli-rs.png","language":"Rust","funding_links":[],"categories":["Rust"],"sub_categories":[],"readme":"# ddbug - Display debugging information \n\n`ddbug` is a utility for using DWARF debugging information to explore aspects\ncode generation, and in particular to see how the code generation changes due\nto things such as source code changes or compiler option changes.\n\nFeatures:\n* Type size and layout\n* Function type, size, inlined functions, function calls, and disassembly\n* Display the differences between two files\n* Plain text or HTTP/HTML output\n* Options to filter/sort the plain text output\n\n**This is alpha software. It is likely to contain many bugs and\nincomplete features.** Neverthless, it is in a state where it can still\nprovide some use. Bug reports and feature requests are welcome.\n\nSupports:\n* ELF files with DWARF\n* Mach-O files with DWARF\n\n## Installing\nAfter installing [Rust](https://www.rust-lang.org/), run:\n```\ncargo install --git https://github.com/gimli-rs/ddbug\n```\n\n## Running\n\nFind the file containing the debugging information, then run:\n```\nddbug path-to-file\n```\n\nSee `ddbug --help` for details on options to control which information\nis displayed.\n\nUsually you will want to run `ddbug` on binaries that have been\noptimized, but which still contain debugging information. For rust, you\ncan build your code using:\n```\nRUSTFLAGS=-g cargo build --release\n```\n\n### Diff mode\n\nWhen given the `--diff` option and two paths to files, `ddbug` will\ndisplay the differences between the two binaries. There are some command\nline options to specify which differences are considered significant.\nUsually you will want to at least ignore addresses (`-i address`).\n\n## Example output\n\n### struct and union\n```\nstruct core::fmt::Formatter\n        size: 96\n        members:\n                0[16]   width: union core::option::Option\u003cusize\u003e\n                16[16]  precision: union core::option::Option\u003cusize\u003e\n                32[16]  buf: struct core::fmt::\u0026mut Write\n                48[16]  curarg: struct core::slice::Iter\u003ccore::fmt::ArgumentV1\u003e\n                64[16]  args: struct \u0026[core::fmt::ArgumentV1]\n                80[4]   flags: u32\n                84[4]   fill: char\n                88[1]   align: enum core::fmt::rt::v1::Alignment\n                89[7]   \u003cpadding\u003e\n```\n\n### enum\nNote that this is a C style enumeration. Rust enumerations are encoded\nin the debugging information as both a union and an enum.\n```\nenum core::result::Result\n        size: 1\n        enumerators:\n                Ok(0)\n                Err(1)\n```\n\n\n### function\n```\nfn ddbug::main\n        linkage name: _ZN5ddbug4mainE\n        address: 0x601f0-0x629d9\n        size: 10218\n        inlined functions:\n                [30]    log::__static_max_level\n                [59]    log::max_log_level\n        calls:\n                0x40eee0 env_logger::init\n                0x48870 core::result::Result\u003c(), log::SetLoggerError\u003e::ok\u003c(),log::SetLoggerError\u003e\n\nfn log::__static_max_level\n        linkage name: _ZN3log18__static_max_levelE\n        inline: yes\n        return type:\n                [8]     enum log::LogLevelFilter\n```\n\n## License\n\nThis software is licensed under either of\n\n  * Apache License, Version 2.0 ([`LICENSE-APACHE`](LICENSE-APACHE))\n  * MIT license ([`LICENSE-MIT`](LICENSE-MIT))\n\nat your option.\n\nUnless you explicitly state otherwise, any contribution intentionally submitted\nfor inclusion in the work by you, as defined in the Apache-2.0 license, shall be\ndual licensed as above, without any additional terms or conditions.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgimli-rs%2Fddbug","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgimli-rs%2Fddbug","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgimli-rs%2Fddbug/lists"}