The new system for running C++ Unit Tests added to VisualGDB 5.2 has out-of-the-box support for CppUTest and GoogleTest framework. But it’s also designed to be easily extendable to support any other test framework through a flexible set of rules defined in XML files. This post will describe how the test frameworks are defined and what can be customized in the framework definitions to support more frameworks.
One of the new features introduced in VisualGDB 5.2 is the seamless integration of C++ unit testing frameworks into Visual Studio. VisualGDB supports the CppUTest and GoogleTest frameworks for Linux, Android and Embedded projects out-of-the-box and also comes with a powerful customization mechanism that allows describing any other test framework in a way that will allow VisualGDB to discover and run tests from it with just a few mouse clicks.
Let’s look into the new unit test system in detail.
Continue reading The New Unit Test Support in VisualGDB 5.2
We have released VisualGDB 5.0 Beta 3! This release focuses mainly on usability features for embedded projects that have been requested by the community.
First of all we have added support for live variables – a convenient way to inspect the global variables in your program without stopping it. VisualGDB supports real-time plotting, data breakpoints and can export the data to CSV:
Continue reading VisualGDB 5.0 Beta 3 is out
Native Android debugging has always been somewhat tricky. In addition to common source path issues and random gdbserver failures, many VisualGDB users reported that they can debug code on their device only if they use certain versions of NDK toolchains. To figure it out once and for all we have added a VisualGDB feature that allows testing a certain Android device with all the toolchains available in the NDK. To get a general overview we have tested the standard ARM emulator images that come with the Android SDK.
Continue reading About Android toolchains and system images
We have released a new version of SmarTTY, our free multi-tabbed SSH client. The new release focuses on improving usability and making common scenarios simpler. Let’s overview the main features of the new release:
Continue reading SmarTTY 2.0 is out
After several preview builds of VisualGDB 5.0 with the new Clang-based IntelliSense engine introducing features from precise code suggestions to fast find-all-references, we are now proud to release the first beta of VisualGDB 5.0. The beta adds a few more features targeted at C++ development productivity:
- CodeMap for C++ (requires VS2012+, but also works on the free Community Edition)
- Advanced renaming
- Intuitive refactoring
Let’s have a detailed look at those new features.
Continue reading VisualGDB 5.0 Beta 1 – Refactoring and C++ CodeMap
We have recently released a new preview build of VisualGDB 5.0 featuring a new Clang-based IntelliSense engine. This preview build focuses on greatly improving the experience with navigating large code bases. In this post I will show how to quickly analyze the code structure and navigate in 2 large codebases:
- The source code of clang itself (~30MB of C++ sources)
- The source code of the Linux Kernel (~420MB of C sources)
One of the annoyances of C++ compared to higher-level languages like C# is the relatively large overhead when creating new methods or functions. Unlike C# where you can just call the not-yet-existing method and then select “create method stub”, C++ makes things harder: creating a new method normally means manual edits to both header and source files, that can quickly get annoying.
To help VisualGDB users improve their productivity the newest VisualGDB 5.0 Preview 2 build contains a special create-from-use engine that automates method creation in a smart way.
Continue reading The new Create-from-use engine makes C++ coding easier
OpenOCD is a great tool. It allows debugging many modern ARM-based microcontrollers using multitudes of JTAG/SWD programmers: from the $50 FlySwatter to the $800 J-Link Pro. It allows customizing lots of settings and it’s open-source so if you encounter some problems with it, you can quickly pinpoint them by stepping through its code. Despite all those strong sides, it has one major drawback – it’s not easy to setup.
A typical OpenOCD debugging setup involves finding the correct initialization scripts, customizing them to match your device/interface and often manually preparing and installing USB drivers. Although generally doable, this looks like a major inconvenience for anyone who expects a “plug-and-play” experience.
Continue reading OpenOCD usability taken to a new level
If you are using a cross-compiler to build a non-trivial Linux app (e.g. including QT libraries), you may encounter errors like this when linking your binary:
ld.exe: warning: libfontconfig.so.1, needed by .../libQtGui.so, not found (try using -rpath or -rpath-link)
ld.exe: warning: libaudio.so.2, needed by .../libQtGui.so, not found (try using -rpath or -rpath-link)
ld.exe: warning: libglib-2.0.so.0, needed by .../libQtGui.so, not found (try using -rpath or -rpath-link)
ld.exe: warning: libpng12.so.0, needed by .../libQtGui.so, not found (try using -rpath or -rpath-link)
ld.exe: warning: libz.so.1, needed by .../libQtGui.so, not found (try using -rpath or -rpath-link)
The output is usually followed by a long list of undefined reference to `xxx’ errors.
Continue reading Fixing -rpath-link issues with cross-compilers