When debugging a problem or optimizing performance we tend to look at the source code of our application and its runtime behavior. There is however a third form of our program we can look at that is far less often used for this purpose, the compiled binary. While this obviously isn't the right form to work with in many scenarios, it does provide us with valuable information when dealing with start-up performance, memory consumption, plug-in loading issues or bizarre runtime behavior for example.
In this talk we will look at various useful information we can find in compiled libraries or executables, with a special focus on Qt related use-cases. Exploring a binary for example shows implications of Qt's various ways of dealing with string literals, how to debug Qt plug-in loading issues, or why member function pointer signal/slot connections can fail in surprising ways. We will also cover some of the tools available for inspecting binary files, relevant linker flags and their impact, and ways to look into the very early, pre-main phases of application runtime.
As the title suggests examples will primarily focus on the ELF format used on Linux, Android and other UNIX systems as well as QNX, but due to their common ancestry you will find most concepts and ideas also applying to PE and Mach-O.
Volker Krause, KDAB
Volker is a Senior Software Engineer at KDAB. He has been developing with Qt for more than ten years now. Volker works in Berlin's KDAB office as a team lead, consultant and trainer. His experience with Qt spans desktop and embedded platforms, with a focus on software architecture and tooling. He has taught many 'Programming with Qt' trainings throughout Europe and is a long-term contributor to KDE and Qt. In 2010 Volker started the GammaRay project to address the need for QML debugging tools (which did not yet exist at this time), and has lead the project since then.
Speaker: Volker Krause, KDAB
Session type: Qt application development and device creation
Date: Wednesday, October 7, 2015 - From 10:40 to 11:10