{"id":8606,"date":"2016-07-27T18:08:54","date_gmt":"2016-07-27T17:08:54","guid":{"rendered":"https:\/\/sysprogs.com\/w\/?p=8606"},"modified":"2016-07-27T18:08:54","modified_gmt":"2016-07-27T17:08:54","slug":"the-new-advanced-memory-window-in-visualgdb-5-2","status":"publish","type":"post","link":"https:\/\/sysprogs.com\/w\/the-new-advanced-memory-window-in-visualgdb-5-2\/","title":{"rendered":"The New Advanced Memory Window in VisualGDB 5.2"},"content":{"rendered":"<p>One of the topics that got us a lot of\u00a0feedback\u00a0recently was the poor performance of the\u00a0Visual Studio Memory window with embedded VisualGDB projects. Two main problems reported by our users were lack of memory view when the program is running and the fact that it tried reading\u00a0a wider\u00a0memory area that was actually\u00a0displayed, sometimes causing the\u00a0underlying tools to crash.\u00a0We have solved that in VisualGDB 5.2 with a brand new Advanced Memory Window specifically designed for maximum usability with VisualGDB\u00a0projects.<a href=\"https:\/\/sysprogs.com\/w\/wp-content\/uploads\/2016\/07\/mem1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-8608\" src=\"https:\/\/sysprogs.com\/w\/wp-content\/uploads\/2016\/07\/mem1.png\" alt=\"mem1\" width=\"864\" height=\"277\" srcset=\"https:\/\/sysprogs.com\/w\/wp-content\/uploads\/2016\/07\/mem1.png 864w, https:\/\/sysprogs.com\/w\/wp-content\/uploads\/2016\/07\/mem1-300x96.png 300w, https:\/\/sysprogs.com\/w\/wp-content\/uploads\/2016\/07\/mem1-768x246.png 768w\" sizes=\"(max-width: 864px) 100vw, 864px\" \/><\/a><\/p>\n<p><!--more--><\/p>\n<p>The new window is a\u00a0drop-in replacement to the regular one.\u00a0First\u00a0time you open a Memory window with VisualGDB 5.2, it will ask\u00a0whether\u00a0you want to use the regular one or the advanced\u00a0one. If you see that question, be\u00a0sure to pick the advanced one because here&#8217;s the list of improvements we made to it:<\/p>\n<ul>\n<li>The new\u00a0window only\u00a0reads the memory you want to see, nothing more, so the gdb stub won&#8217;t\u00a0crash suddenly because you approached an unreadable memory region.<\/li>\n<li>You can switch between using the regular GDB commands or using the\u00a0live memory engine used for Live Variables. The latter is much faster and can display the memory contents while the program is running. You can also configure it to auto-refresh the contents periodically and even\u00a0stop your program if changes are detected.<a href=\"https:\/\/sysprogs.com\/w\/wp-content\/uploads\/2016\/07\/live.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-8610\" src=\"https:\/\/sysprogs.com\/w\/wp-content\/uploads\/2016\/07\/live.png\" alt=\"live\" width=\"653\" height=\"283\" srcset=\"https:\/\/sysprogs.com\/w\/wp-content\/uploads\/2016\/07\/live.png 653w, https:\/\/sysprogs.com\/w\/wp-content\/uploads\/2016\/07\/live-300x130.png 300w\" sizes=\"(max-width: 653px) 100vw, 653px\" \/><\/a><\/li>\n<li>We&#8217;ve added a status bar showing\u00a0the address of the\u00a0currently selected text, and the size of the\u00a0selected area. If you are\u00a0viewing the memory\u00a0as an array of integers or floating-point numbers, it will also display the minimum\/maximum\/average values\u00a0for your convenience.<a href=\"https:\/\/sysprogs.com\/w\/wp-content\/uploads\/2016\/07\/statusbar.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-8611\" src=\"https:\/\/sysprogs.com\/w\/wp-content\/uploads\/2016\/07\/statusbar.png\" alt=\"statusbar\" width=\"665\" height=\"280\" srcset=\"https:\/\/sysprogs.com\/w\/wp-content\/uploads\/2016\/07\/statusbar.png 665w, https:\/\/sysprogs.com\/w\/wp-content\/uploads\/2016\/07\/statusbar-300x126.png 300w\" sizes=\"(max-width: 665px) 100vw, 665px\" \/><\/a><\/li>\n<li>The new window is fully integrated with the Visual Watch and Live Variables.\u00a0A couple of mouse clicks will quickly get a selected memory area plotted as a graph with the type and size automatically derived from your selection:<a href=\"https:\/\/sysprogs.com\/w\/wp-content\/uploads\/2016\/07\/vwatch.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-8609\" src=\"https:\/\/sysprogs.com\/w\/wp-content\/uploads\/2016\/07\/vwatch-1024x429.png\" alt=\"vwatch\" width=\"474\" height=\"199\" srcset=\"https:\/\/sysprogs.com\/w\/wp-content\/uploads\/2016\/07\/vwatch-1024x429.png 1024w, https:\/\/sysprogs.com\/w\/wp-content\/uploads\/2016\/07\/vwatch-300x126.png 300w, https:\/\/sysprogs.com\/w\/wp-content\/uploads\/2016\/07\/vwatch-768x322.png 768w, https:\/\/sysprogs.com\/w\/wp-content\/uploads\/2016\/07\/vwatch.png 1073w\" sizes=\"(max-width: 474px) 100vw, 474px\" \/><\/a><\/li>\n<li>We&#8217;ve added buttons for saving selected area to a binary file and for reading it back into the target memory.<\/li>\n<li>Finally we have added a special annotation mode where the Memory Window will\u00a0search the shown region for global variables and functions and will highlight them. Hovering your mouse over the contents of a function or\u00a0variable will display a hint\u00a0allowing you to quickly open its definition:<a href=\"https:\/\/sysprogs.com\/w\/wp-content\/uploads\/2016\/07\/ramfunc.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-8612\" src=\"https:\/\/sysprogs.com\/w\/wp-content\/uploads\/2016\/07\/ramfunc.png\" alt=\"ramfunc\" width=\"669\" height=\"282\" srcset=\"https:\/\/sysprogs.com\/w\/wp-content\/uploads\/2016\/07\/ramfunc.png 669w, https:\/\/sysprogs.com\/w\/wp-content\/uploads\/2016\/07\/ramfunc-300x126.png 300w\" sizes=\"(max-width: 669px) 100vw, 669px\" \/><\/a>This also works for stack frames: if the viewed memory region\u00a0approaches the stack pointer, VisualGDB wil query gdb debugger for the bounds of\u00a0the stack\u00a0frames and will\u00a0highlight them in the Memory window:<a href=\"https:\/\/sysprogs.com\/w\/wp-content\/uploads\/2016\/07\/frame.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-8613\" src=\"https:\/\/sysprogs.com\/w\/wp-content\/uploads\/2016\/07\/frame.png\" alt=\"frame\" width=\"665\" height=\"283\" srcset=\"https:\/\/sysprogs.com\/w\/wp-content\/uploads\/2016\/07\/frame.png 665w, https:\/\/sysprogs.com\/w\/wp-content\/uploads\/2016\/07\/frame-300x128.png 300w\" sizes=\"(max-width: 665px) 100vw, 665px\" \/><\/a><\/li>\n<\/ul>\n<p>You can download\u00a0the latest VisualGDB with the new advanced Memory window on the <a href=\"http:\/\/visualgdb.com\/download\/\">download page<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>One of the topics that got us a lot of\u00a0feedback\u00a0recently was the poor performance of the\u00a0Visual Studio Memory window with embedded VisualGDB projects. Two main problems reported by our users were lack of memory view when the program is running and the fact that it tried reading\u00a0a wider\u00a0memory area that was actually\u00a0displayed, sometimes causing the\u00a0underlying &hellip; <a href=\"https:\/\/sysprogs.com\/w\/the-new-advanced-memory-window-in-visualgdb-5-2\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">The New Advanced Memory Window in VisualGDB 5.2<\/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":[216],"_links":{"self":[{"href":"https:\/\/sysprogs.com\/w\/wp-json\/wp\/v2\/posts\/8606"}],"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=8606"}],"version-history":[{"count":1,"href":"https:\/\/sysprogs.com\/w\/wp-json\/wp\/v2\/posts\/8606\/revisions"}],"predecessor-version":[{"id":8614,"href":"https:\/\/sysprogs.com\/w\/wp-json\/wp\/v2\/posts\/8606\/revisions\/8614"}],"wp:attachment":[{"href":"https:\/\/sysprogs.com\/w\/wp-json\/wp\/v2\/media?parent=8606"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sysprogs.com\/w\/wp-json\/wp\/v2\/categories?post=8606"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sysprogs.com\/w\/wp-json\/wp\/v2\/tags?post=8606"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}