stacktrace
cpptrace
stacktrace | cpptrace | |
---|---|---|
1 | 2 | |
396 | 437 | |
2.0% | - | |
7.2 | 9.7 | |
5 days ago | 4 days ago | |
C++ | C++ | |
- | MIT License |
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.
stacktrace
-
60x speed-up of Linux “perf”
I do know Boost.Stacktrace calls addr2line too. From the code(https://github.com/boostorg/stacktrace/blob/develop/include/...), it seems Boost.Stacktrace also shells out to addr2line for every address. But in practice, I found the overhead of boost::stacktrace::stacktrace() is not as horrendous as my crappy implementation, which calls addr2line, too.
cpptrace
- CppTrace – Simple, portable, and self-contained stacktrace library for C++11
-
Is try-catch absolute NO in C++ robotics applications?
I am guessing how bad it really is to simply throw some custom exception along with useful message and status code along with stack trace instead of simply returning failure status code. This way we can have single try-catch at the top level function eliminating hundreds of if-checks. Inside that catch block we can print stack trace we will know exact call hierarchy and line number that caused exception. For example a cpptrace library define custom exceptions that extend std:: exceptions and inject stack trace that can be printed with simple function call. This will also eliminate any possible tricky bug that may get introduced by forgetting to check status code returned by any function since exceptions are forced to be dealt with or else we can get failure stack trace.
What are some alternatives?
addr2line - A cross-platform `addr2line` clone written in Rust, using `gimli`
easyloggingpp - C++ logging library. It is extremely powerful, extendable, light-weight, fast performing, thread and type safe and consists of many built-in features. It provides ability to write logs in your own customized format. It also provide support for logging your classes, third-party libraries, STL and third-party containers etc.
honggfuzz - Security oriented software fuzzer. Supports evolutionary, feedback-driven fuzzing based on code coverage (SW and HW based)
libassert - The most over-engineered C++ assertion library
gdrcopy - A fast GPU memory copy library based on NVIDIA GPUDirect RDMA technology
rr - Record and Replay Framework
linux - Linux kernel source tree