{"id":27968,"date":"2020-04-28T04:40:23","date_gmt":"2020-04-28T03:40:23","guid":{"rendered":"https:\/\/sysprogs.com\/w\/?p=27968"},"modified":"2020-04-28T04:42:41","modified_gmt":"2020-04-28T03:42:41","slug":"announcing-visualgdb-5-5-preview-5","status":"publish","type":"post","link":"https:\/\/sysprogs.com\/w\/announcing-visualgdb-5-5-preview-5\/","title":{"rendered":"Announcing VisualGDB 5.5 Preview 5"},"content":{"rendered":"<p>We are excited to announce the release of VisualGDB 5.5 Preview 5. This version focuses on advanced non-intrusive debugging, introducing several features that let you inspect the state of your program without ever having to interrupt it. It also introduces support for ESP-IDF 4.1 and includes several other fixes and optimizations.<\/p>\n<p><a href=\"https:\/\/sysprogs.com\/w\/wp-content\/uploads\/2020\/04\/10-plot.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-27969\" src=\"https:\/\/sysprogs.com\/w\/wp-content\/uploads\/2020\/04\/10-plot.png\" alt=\"\" width=\"858\" height=\"449\" \/><\/a><!--more--><\/p>\n<h2>New Live Watch<\/h2>\n<p>VisualGDB supported Live Variables for a while. Unlike the regular Watch window that only works when the debugger is stopped, Live Variables allow monitoring the state of selected variables in the background, while the program is running. However, adding new Live Variables, or expanding pointers or structures was slow, as it involved stopping the debug session to query this information from gdb.<\/p>\n<p>The new VisualGDB Preview solves this once and for all by taking full control over the debug symbol handling. Now instead of manually entering each variable in the Watch mode, you can switch to the Globals view and quickly browse through all the global variables:<a href=\"https:\/\/sysprogs.com\/w\/wp-content\/uploads\/2020\/04\/06-all.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-27970\" src=\"https:\/\/sysprogs.com\/w\/wp-content\/uploads\/2020\/04\/06-all.png\" alt=\"\" width=\"786\" height=\"335\" \/><\/a><\/p>\n<p>The Globals view supports fast filtering, &#8220;favorite&#8221; flag and works with structures and pointers:<a href=\"https:\/\/sysprogs.com\/w\/wp-content\/uploads\/2020\/04\/16-pointers.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-27972\" src=\"https:\/\/sysprogs.com\/w\/wp-content\/uploads\/2020\/04\/16-pointers.png\" alt=\"\" width=\"1182\" height=\"759\" \/><\/a><\/p>\n<p>Because VisualGDB knows where exactly where each variable is declared, it can also show the values directly in the code:<a href=\"https:\/\/sysprogs.com\/w\/wp-content\/uploads\/2020\/04\/15-inline.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-27971\" src=\"https:\/\/sysprogs.com\/w\/wp-content\/uploads\/2020\/04\/15-inline.png\" alt=\"\" width=\"1182\" height=\"759\" \/><\/a><\/p>\n<p>All of this works without stopping the GDB session, so you can get a very good idea of what your real-time application is doing, without having to interfere with its flow. Especially, when used together with Live Coverage.<\/p>\n<h2>RTOS Analysis<\/h2>\n<p>Live Watch can also make sense of the internal RTOS state without any instrumentation overhead. Simply switch to the &#8220;FreeRTOS&#8221; view and see detailed information about the kernel state, threads, mutexes, semaphores and queues:<a href=\"https:\/\/sysprogs.com\/w\/wp-content\/uploads\/2020\/04\/08-state.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-27973\" src=\"https:\/\/sysprogs.com\/w\/wp-content\/uploads\/2020\/04\/08-state.png\" alt=\"\" width=\"785\" height=\"499\" \/><\/a>You can now see the owner of each global mutex, inspect (and plot) the value of semaphores, queues, or track the thread run time in a purely non-intrusive way with zero instrumentation overhead:<a href=\"https:\/\/sysprogs.com\/w\/wp-content\/uploads\/2020\/04\/11-stack.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-27974\" src=\"https:\/\/sysprogs.com\/w\/wp-content\/uploads\/2020\/04\/11-stack.png\" alt=\"\" width=\"861\" height=\"486\" \/><\/a><\/p>\n<h2>Live Stack and Heap Monitoring<\/h2>\n<p>The new Live Watch includes a live stack usage monitor, that scans the memory allocated for the stack, and detects when the initial pattern gets overwritten.<\/p>\n<p>If you are using the FreeRTOS heap, or newlib-nano heap, VisualGDB can now parse the heap structure and show a detailed report on available and used memory, or let you inspect individual blocks:<a href=\"https:\/\/sysprogs.com\/w\/wp-content\/uploads\/2020\/04\/12-heap.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-27975\" src=\"https:\/\/sysprogs.com\/w\/wp-content\/uploads\/2020\/04\/12-heap.png\" alt=\"\" width=\"901\" height=\"393\" \/><\/a><\/p>\n<h2>Live Watch Plugins<\/h2>\n<p>Live Watch goes beyond just showing you the global variables, or threads. The new extensibility interfaces let you develop your own Live Watch plugins, visualizing the state of the most critical parts of your system, without ever having to interrupt it. VisualGDB will take care of memory caching, I\/O optimization, plotting and watching for specified conditions, so you can fully focus on understanding your program&#8217;s state.<\/p>\n<p>To make plugin writing easier, we have released the <a href=\"https:\/\/github.com\/sysprogs\/RTOSPlugins\/tree\/master\/PluginFreeRTOS\/LiveWatch\">code for analyzing the FreeRTOS state<\/a> and the <a href=\"https:\/\/github.com\/sysprogs\/VisualGDBExtensibilityExamples\/tree\/master\/LiveWatchPlugins\/StackAndHeapLiveWatch\">general stack\/heap analyzer<\/a> as two open-source plugins, so you can fork them as a starting point in your experiments.<\/p>\n<h2>Better Path Mapping Troubleshooting<\/h2>\n<p>If VisualGDB doesn&#8217;t manage to set a breakpoint in your Linux project, or the path reported by GDB appears incorrect, it will now automatically suggest rectifying it:<a href=\"https:\/\/sysprogs.com\/w\/wp-content\/uploads\/2020\/04\/map.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-27976\" src=\"https:\/\/sysprogs.com\/w\/wp-content\/uploads\/2020\/04\/map.png\" alt=\"\" width=\"786\" height=\"593\" \/><\/a>This fixes issues caused by target symlinks, moved projects, inconsistent symbols and many other problems. Once the correct path is found, VisualGDB will automatically suggest adding a generic path mapping rule:<a href=\"https:\/\/sysprogs.com\/w\/wp-content\/uploads\/2020\/04\/fix.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-27977\" src=\"https:\/\/sysprogs.com\/w\/wp-content\/uploads\/2020\/04\/fix.png\" alt=\"\" width=\"786\" height=\"593\" \/><\/a><\/p>\n<h2>ESP-IDF 4.1 Support<\/h2>\n<p>VisualGDB is now compatible with the new ESP32 toolchain layout, that decouples the Python environment from the compiler and the rest of the tools. This enables support for the latest ESP-IDF 4.1, adds seamless integration for the ULP tools, and allows speeding up your builds by using CCache. Don&#8217;t forget to grab the latest ESP32 toolchain <a href=\"https:\/\/gnutoolchains.com\/esp32\/\">here<\/a>, or update via the VisualGDB Package Manager.<\/p>\n<h2>Give It a Try<\/h2>\n<p>VisualGDB 5.5 Preview 5 includes several other improvements and fixes. We have optimized the IntelliSense popup performance,\u00a0 reduced memory usage, on large projects, improved Memory Explorer accuracy for IAR\/Keil and solved a few other issues.\u00a0 You can download the new preview build on the\u00a0<a href=\"https:\/\/visualgdb.com\/download\/\">download page<\/a>. If you have any feedback, don\u2019t hesitate to reach us out via our\u00a0<a href=\"https:\/\/sysprogs.com\/support\/\">support form<\/a>\u00a0or the\u00a0<a href=\"https:\/\/sysprogs.com\/w\/forums\/forum\/visualgdb\/\">VisualGDB forum<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>We are excited to announce the release of VisualGDB 5.5 Preview 5. This version focuses on advanced non-intrusive debugging, introducing several features that let you inspect the state of your program without ever having to interrupt it. It also introduces support for ESP-IDF 4.1 and includes several other fixes and optimizations.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_bbp_topic_count":0,"_bbp_reply_count":0,"_bbp_total_topic_count":0,"_bbp_total_reply_count":0,"_bbp_voice_count":0,"_bbp_anonymous_reply_count":0,"_bbp_topic_count_hidden":0,"_bbp_reply_count_hidden":0,"_bbp_forum_subforum_count":0,"footnotes":""},"categories":[1],"tags":[859],"_links":{"self":[{"href":"https:\/\/sysprogs.com\/w\/wp-json\/wp\/v2\/posts\/27968"}],"collection":[{"href":"https:\/\/sysprogs.com\/w\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sysprogs.com\/w\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sysprogs.com\/w\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/sysprogs.com\/w\/wp-json\/wp\/v2\/comments?post=27968"}],"version-history":[{"count":3,"href":"https:\/\/sysprogs.com\/w\/wp-json\/wp\/v2\/posts\/27968\/revisions"}],"predecessor-version":[{"id":27980,"href":"https:\/\/sysprogs.com\/w\/wp-json\/wp\/v2\/posts\/27968\/revisions\/27980"}],"wp:attachment":[{"href":"https:\/\/sysprogs.com\/w\/wp-json\/wp\/v2\/media?parent=27968"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sysprogs.com\/w\/wp-json\/wp\/v2\/categories?post=27968"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sysprogs.com\/w\/wp-json\/wp\/v2\/tags?post=27968"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}