Git Product home page Git Product logo

debugonomicon's Introduction

[Work in Progress] - Debugonomicon

License

The Debugonomicon (this project) is distributed under the following licenses:

  • The code samples and free-standing Cargo projects contained within this book are licensed under the terms of both the MIT License and the Apache License v2.0.
  • The written prose contained within this book is licensed under the terms of the Creative Commons CC-BY-SA v4.0 license.

Copies of the licenses used by this project may also be found here:

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be licensed as above, without any additional terms or conditions.

Code of Conduct

Contribution to this crate is organized under the terms of the Rust Code of Conduct, the maintainer of this crate, the Resources team, promises to intervene to uphold that code of conduct.

debugonomicon's People

Contributors

a2800276 avatar adamgreig avatar austinbes avatar bors[bot] avatar dbrgn avatar dragonmux avatar japaric avatar jof avatar korken89 avatar ryankurte avatar samp20 avatar seanybaggins avatar therealprof avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

debugonomicon's Issues

Section: Introduction

What is a debugger and how to use it, focussing on GDB at this time due to issues with LLVM remote targets.

Including:

  • Tools, GDB server and gdb and how they interact
  • Commands, how to launch and use GDB
  • Workflows, how to fit both together?

Section: Lower level tools

A section with a page describing the use of each of the following tools (used with GDB). The goal of this section is to help people get started and use a specific piece of debugging hardware.

Before starting on these, we should perhaps decide on a common format to follow. If you're working on a page, please create an issue with a reference back to this one.

Section: Overview

A description of how embedded programming and debugging works with links out to other sections, this is likely to be arm focussed at the moment.
The goal of this section is to let people know what is available / currently used / they need to learn.

Including:

  • Why programmers / debuggers
  • Interfaces / Protocols (SWD, JTAG)
  • Debuggers (BM, STLink, Segger, OpenOCD)
  • Tools (GDB, LLDB)
  • Semihosting (and the JLink specific equivalent)?

Programming, Running and Debugging Book

From @japaric on August 10, 2018 2:43

From @ryankurte on July 5, 2018 22:23

As mentioned here it'd be great to develop Running and Debugging into a useful tool-independent resource.

As far as I see it, we need:

  • A common description of how embedded debugging works
    • JTAG
    • SWD
  • An intro to embedded debugging
    • GDB for now
    • LLDB one day?
  • An overview of available tools (hardware and software) and how to identify them
  • An intro to the higher level tools (w/ arbitrary hardware)
  • A page on the use of each tool for each of

At this stage lldb isn't really viable for embedded debugging, so there's going to be a requirement for target GDB at least for now.

Any thoughts?

(@therealprof, @kjetilkjeka, @korken89)

Copied from original issue: rust-embedded/wg#112

Copied from original issue: rust-embedded/book#10

remove this from the internet

As a rust newbie I am frustrated by the amount of info which is outdated. I've wasted days following along tutorials which are poorly tested, and do not work with the latest tools and version of rust.
This project doesn't even appear to be that good. There is zero content, appears to be abandoned, and is just another waste of 5 minutes of everyone's time.
Sorry to be harsh

Section: GDB

An introduction to our old friend GDB

  • How it works (gdb server vs. client etc.)
  • How to run against a compiled rust target
  • Common debugging commands
  • Useful references

Section: Binaries, conversion, and analysis

As mentioned in #9, it would be good to have explanations of how to coerce output files into different types using scripts or cargo-binutils, as well as perhaps in the use of map and nm (though iirc these are introduced in other books?)

GDB stepping into rust sources

Debugging with GDB works for the most part, however it struggles to find the rust source files. I believe this is because the rust library is compiled in /rustc/{GIT_COMMIT_HASH} which only exists on the build server.

You can use a set substitute-path command to substitute this for the RUST_SRC_PATH environment variable, however this still needs to be updated every time a new rust version is released.

Should I add this to the debugonomicon for now anyway? I can't really think of any better option besides doing something clever with the build.rs script perhaps.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.