orbuculum
Cortex M SWO SWV Demux and Postprocess (Software) (by orbcode)
cargo-call-stack
Whole program static stack analysis (by japaric)
orbuculum | cargo-call-stack | |
---|---|---|
2 | 5 | |
355 | 555 | |
2.0% | - | |
8.1 | 0.0 | |
21 days ago | about 2 months ago | |
C | Rust | |
GNU General Public License v3.0 or later | Apache License 2.0 |
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
orbuculum
Posts with mentions or reviews of orbuculum.
We have used some of these posts to build our list of alternatives
and similar projects. The last one was on 2023-03-30.
-
Debugging and profiling embedded applications.
I've heard Orbuculum is a great set of tooling for profiling in general (Cortex-M only). It's not Rust on the host side, but you may be able to give it suitable ITM output with manual instrumentation.
-
Alternatives to SEGGER RTT and SystemView?
I think that semihosting is good enought for simple task and printf, (https://interrupt.memfault.com/blog/arm-semihosting), or you can look into ITM tracing, but it require also the SWO pin. (https://github.com/orbcode/orbuculum is very intresting)
cargo-call-stack
Posts with mentions or reviews of cargo-call-stack.
We have used some of these posts to build our list of alternatives
and similar projects. The last one was on 2024-03-25.
-
Why choose async/await over threads?
Yes, it's what I wrote about in the last paragraph. If you can compute maximum stack size of a function, then you can avoid dynamic allocation with fibers as well. You are right that such implementations do not exist in right now, but I think it's technically possible as demonstrated by tools such as https://github.com/japaric/cargo-call-stack The main stumbling block here is FFI, historically shared libraries do not have any annotations about stack usage, so functions with bounded stack usage would not be able to use even libc.
-
Ask not what the compiler can do for you
For rust code, I have found https://github.com/japaric/cargo-call-stack to be the best available option, as it does take advantage of how Rust types are implemented in LLVM-IR to handle function pointers / dynamic dispatch a little better. An even better solution would try to use MIR type information as well to further narrow down targets of dynamic calls in a Rust-specific way, but no such tool exists that I know of.
-
Debugging and profiling embedded applications.
cargo-call-stack Static stack analysis!
-
In defense of complicated programming languages
Generators can just dump stuff on the stack. They have additional their own stack for storing their state. If you can prove an upper amount of creation of generators in the call graph, that would however work. There is for example this nice tool for Rust doing the overapproximation.
-
Understanding thread stack sizes and how alpine is different
Not easy at all.
I know that in the small-embedded world, people do work on such things.
Eg https://github.com/japaric/cargo-call-stack
What are some alternatives?
When comparing orbuculum and cargo-call-stack you can also consider the following projects:
itm - ARMv7-M ITM packet protocol decoder library crate and CLI tool.
hyperswitch - An open source payments switch written in Rust to make payments fast, reliable and affordable
defmt - Efficient, deferred formatting for logging on embedded systems