Backtrace

Tag: debugging

Compile Once Debug Twice: Picking a Compiler for Debuggability (1/3)

Have you ever had an assert get triggered only to result in a useless core dump with missing variable information or an invalid callstack? Common factors that go into selecting a C or C++ compiler are: availability, correctness, compilation speed and application performance. A factor that is often neglected is debug information quality, which symbolic debuggers use to reconcile application executable state to the source-code form that is familiar to most software engineers. When production builds of an application fail, the level of access to program state directly impacts the ability for a software engineer to investigate and fix a bug. If a compiler has optimized out a variable or is unable to express to a symbolic debugger how to reconstruct the value of a variable, the engineer’s investigation process is significantly impacted. Either the engineer has to attempt to recreate the problem, iterate through speculative fixes or attempt to perform prohibitively expensive debugging, such as reconstructing program state through executable code analysis.

Debug information quality is in fact not proportionally related to the quality of the generated executable code and wildly varies from compiler to compiler. This blog post compares debug information quality between two popular compilers: gcc and clang. In this blog post, we will introduce the topic of optimization and highlight examples of their impact on debuggability. This blog post is part of a longer series, in the next blog post we’ll do finer grained analysis directly comparing gcc and clang in real world and synthetic programs.

Read More

CPPCast Guest Appearance

Our CEO, Abel Mathew, did a guest appearance at the end of last year on CPPCast. CPPCast is a podcast for C++ devs by C++ devs (hosts Rob Irving and Jason Turner). Rob, Jason, and Abel talk about C++ issues and items such as Zap CC, Conan joining JFrog, and how developers use C++. Abel also… Read More

Minidump Beta

Backtrace is pleased to announce our free minidump beta. Software teams can now take control of their crashes by using Backtrace to capture, aggregate, and analyze their minidumps across their entire deployment base. If you are interested in taking part in our free minidump beta, sign up here and we’ll get back to you shortly.… Read More

Debug with your Web Browser

We are happy to announce the beta release of the Backtrace web-based inspector. Seamlessly integrated into the Backtrace Console, you will now be able to view detailed application state captured at the time of error. This information includes all threads (and goroutines for the Gophers), variables, memory allocation details, annotations, pretty-printed data structures, and more. Read More

Implementing a Debugger: The Fundamentals

This is the first of a two-part series describing the implementation of a generic debugging tool. Part one covers the core internals of a debugger; part two focuses on extending a debugger to support a specific programming language — Go. Implementing a debugging tool may seem like a monumental task. gdb, one of the most… Read More