{"id":12282,"date":"2017-09-04T19:54:06","date_gmt":"2017-09-04T18:54:06","guid":{"rendered":"https:\/\/sysprogs.com\/w\/?p=12282"},"modified":"2017-09-04T19:54:06","modified_gmt":"2017-09-04T18:54:06","slug":"visualgdb-5-3-preview-8-is-out","status":"publish","type":"post","link":"https:\/\/sysprogs.com\/w\/visualgdb-5-3-preview-8-is-out\/","title":{"rendered":"VisualGDB 5.3 Preview 8 is out"},"content":{"rendered":"<p>Today we are proud to announce the\u00a0release of VisualGDB 5.3 Preview 8.\u00a0This build mainly focuses on stability and usability improvements, such as better integration with Kinetis KSDK 2.x and support for importing Keil projects,\u00a0however it also introduces a feature that greatly simplifies and reduces the overhead of analyzing precise timing of your embedded code &#8211; Chronometer.<\/p>\n<p><a href=\"https:\/\/sysprogs.com\/w\/wp-content\/uploads\/2017\/09\/chrono-toolwnd.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-12283\" src=\"https:\/\/sysprogs.com\/w\/wp-content\/uploads\/2017\/09\/chrono-toolwnd.png\" alt=\"chrono-toolwnd\" width=\"524\" height=\"283\" srcset=\"https:\/\/sysprogs.com\/w\/wp-content\/uploads\/2017\/09\/chrono-toolwnd.png 524w, https:\/\/sysprogs.com\/w\/wp-content\/uploads\/2017\/09\/chrono-toolwnd-300x162.png 300w\" sizes=\"(max-width: 524px) 100vw, 524px\" \/><\/a><\/p>\n<p><!--more--><\/p>\n<p>Chronometer is an extendable\u00a0mechanism that\u00a0makes VisualGDB aware of the clock cycles\u00a0elapsed between different debugging events (like stopping at a breakpoint or stepping over a line of code). It doesn&#8217;t need to instrument any code and works by\u00a0simply\u00a0reading the debug registers of your\u00a0microcontroller once\u00a0the debugger has stopped the program, and attaching time labels to the debug events. As a result, you can quickly see how\u00a0many clock cycles (and microseconds) a particular function call (or a block of code) took without the need to enable instrumentation, reference any frameworks, or change your program in any way.<\/p>\n<p>Simply enable the Chronometer via the Embedded Debug Tweaking page of VisualGDB Project Properties and VisualGDB will show\u00a0the chronometer window each time you debug your program:<a href=\"https:\/\/sysprogs.com\/w\/wp-content\/uploads\/2017\/09\/chrono.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-12284\" src=\"https:\/\/sysprogs.com\/w\/wp-content\/uploads\/2017\/09\/chrono.png\" alt=\"chrono\" width=\"786\" height=\"578\" srcset=\"https:\/\/sysprogs.com\/w\/wp-content\/uploads\/2017\/09\/chrono.png 786w, https:\/\/sysprogs.com\/w\/wp-content\/uploads\/2017\/09\/chrono-300x221.png 300w, https:\/\/sysprogs.com\/w\/wp-content\/uploads\/2017\/09\/chrono-768x565.png 768w\" sizes=\"(max-width: 786px) 100vw, 786px\" \/><\/a><\/p>\n<p>As of VisualGDB 5.3 Preview 8, the chronometer only works on ARM Cortex devices that support the debug instruction counter (a hardware mechanism for counting CPU cycles), however we designed\u00a0this feature to be completely extendable, so you can configure it to use other sources of timing information (such as\u00a0hardware timers) instead. Simply clone the default provider definition under <strong>C:\\Program Files (x86)\\Sysprogs\\VisualGDB\\TimestampProviders<\/strong> and tell VisualGDB\u00a0where to read the current timestamp value and how to reset it to avoid overflows and it will pick it up:<a href=\"https:\/\/sysprogs.com\/w\/wp-content\/uploads\/2017\/09\/dwt.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-12285\" src=\"https:\/\/sysprogs.com\/w\/wp-content\/uploads\/2017\/09\/dwt.png\" alt=\"dwt\" width=\"1060\" height=\"279\" srcset=\"https:\/\/sysprogs.com\/w\/wp-content\/uploads\/2017\/09\/dwt.png 1060w, https:\/\/sysprogs.com\/w\/wp-content\/uploads\/2017\/09\/dwt-300x79.png 300w, https:\/\/sysprogs.com\/w\/wp-content\/uploads\/2017\/09\/dwt-768x202.png 768w, https:\/\/sysprogs.com\/w\/wp-content\/uploads\/2017\/09\/dwt-1024x270.png 1024w\" sizes=\"(max-width: 1060px) 100vw, 1060px\" \/><\/a><\/p>\n<h2>Integration tests<\/h2>\n<p>Chronometer is fully integrated with the recently introduced Embedded\u00a0Integration Tests feature. As long as it is enabled for a project, you can\u00a0attach meaningful labels to different points in time and then verify that the time passed since that label\u00a0is within the expected bounds:<a href=\"https:\/\/sysprogs.com\/w\/wp-content\/uploads\/2017\/09\/timingverif.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-12286\" src=\"https:\/\/sysprogs.com\/w\/wp-content\/uploads\/2017\/09\/timingverif.png\" alt=\"timingverif\" width=\"1080\" height=\"740\" srcset=\"https:\/\/sysprogs.com\/w\/wp-content\/uploads\/2017\/09\/timingverif.png 1080w, https:\/\/sysprogs.com\/w\/wp-content\/uploads\/2017\/09\/timingverif-300x206.png 300w, https:\/\/sysprogs.com\/w\/wp-content\/uploads\/2017\/09\/timingverif-768x526.png 768w, https:\/\/sysprogs.com\/w\/wp-content\/uploads\/2017\/09\/timingverif-1024x702.png 1024w\" sizes=\"(max-width: 1080px) 100vw, 1080px\" \/><\/a><\/p>\n<p>This could be useful if your program performs complex computations from interrupt handlers and you\u00a0have strict constraints for the computation time so that it leaves\u00a0enough CPU cycles for the other functionality.\u00a0Record\u00a0a simple integration test running the critical path and verifying the timings and you will\u00a0get immediately notified once a change to any of your functions breaks the timing constraints.<\/p>\n<h2>Try it out<\/h2>\n<p>VisualGDB 5.3 Preview 8 is available for download at the <a href=\"https:\/\/visualgdb.com\/download\/\">VisualGDB download page<\/a>.\u00a0Give it a try and don\u2019t hesitate to share your feedback via our <a href=\"https:\/\/sysprogs.com\/w\/forums\/forum\/visualgdb\/\">forum<\/a> or <a href=\"http:\/\/sysprogs.com\/support\/\">support page<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Today we are proud to announce the\u00a0release of VisualGDB 5.3 Preview 8.\u00a0This build mainly focuses on stability and usability improvements, such as better integration with Kinetis KSDK 2.x and support for importing Keil projects,\u00a0however it also introduces a feature that greatly simplifies and reduces the overhead of analyzing precise timing of your embedded code &#8211; &hellip; <a href=\"https:\/\/sysprogs.com\/w\/visualgdb-5-3-preview-8-is-out\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">VisualGDB 5.3 Preview 8 is out<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","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":[],"_links":{"self":[{"href":"https:\/\/sysprogs.com\/w\/wp-json\/wp\/v2\/posts\/12282"}],"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=12282"}],"version-history":[{"count":1,"href":"https:\/\/sysprogs.com\/w\/wp-json\/wp\/v2\/posts\/12282\/revisions"}],"predecessor-version":[{"id":12287,"href":"https:\/\/sysprogs.com\/w\/wp-json\/wp\/v2\/posts\/12282\/revisions\/12287"}],"wp:attachment":[{"href":"https:\/\/sysprogs.com\/w\/wp-json\/wp\/v2\/media?parent=12282"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sysprogs.com\/w\/wp-json\/wp\/v2\/categories?post=12282"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sysprogs.com\/w\/wp-json\/wp\/v2\/tags?post=12282"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}