String watch Microsoft Visual Studio add-in

Last page update: 16.11.2001

Current product version: 1.3.4.1

Download: here (100k)

Origin: "Microsoft Visual C++ 6.0" has debugger limitation: it shows first ~250 symbols of string only

Purpose: Expand debugger functionality by evaluating expression and showing resulting string in common edit

Features:

  1. The following string types are supported: std::basic_string, MFC/WTL CString, BSTR, _bstr_t, CComBSTR, char*, WCHAR*
  2. String type autodetection.
  3. String-type specific additional info (e.g. std::basic_string: length, capacity, buffer reference count)
  4. Expression history
  5. Autoevaluation of selected text or text under cursor
  6. Dump of strings with '\0' symbol inside
  7. A whole bunch of small but useful features

Known limitations: edit control used to output evaluated string is VERY slow (especially with word-wrap enabled). So 70% of dump time is taken by output of text to edit control. This is very noticeable on strings longer than 100000 symbols.

Intended audience: C/C++ developers using Microsoft Visual Studio 6.0

How does it looks like



How to install: unpack ZIP file into some directory You want to use as home of add-in. Then run DevStudio and right-click on some toolbar. Select "Customize..." and jump to "Add-ins and Macro Files". Hit "Browse..." and go to the directory you've unpacked ZIP to. Select "Files of type": "Add-ins (.dll)". Open XDebug.dll file. "XDebug Developer Studio Add-in" will appear in add-ins list. Jump to "Commands" tab, jump to "Category:" "Add-ins". You will see icon with white eyes and green letters STR. Drag it to any DevStudio toolbar you like. The most appropriate place for this button is "Debug" toolbar.
After add-in is successfully installed, You can use it when some application is under debug. Just select variable You want to be evaluated and click on StringWatch toolbar button with big white eyes. Enjoy.

Version history:
------------------------------------------------------------------------
1.3.4.1 (16.11.2001)
------------------------------------------------------------------------
1. New option added: try %d kb block dump. Dumps at least %d kilobytes of data. Actual only for LPSZ and LPWSZ data types. Useful for dumping memory blocks with NULLs inside.
------------------------------------------------------------------------
1.3.3.1 (06.11.2001)
------------------------------------------------------------------------
1. Bug fixed with strings including NULL.
------------------------------------------------------------------------
1.3.3.0 (29.10.2001)
------------------------------------------------------------------------
1. Faster string dump
2. Dump limit option added
3. Version info is shown in message-box informing that add-in may be used only
under debug.
------------------------------------------------------------------------
1.3.1.0 (15.10.2001)
------------------------------------------------------------------------
1. Selected expression is trimmed
2. Dump and additional info was radix dependent (fixed)
3. About dialog
4. Position and size of main dialog is saved on exit
------------------------------------------------------------------------
1.3.0.1 (10.10.2001)
------------------------------------------------------------------------
1. Options dialog
2. Output text wrap
3. Replacing of '\r', '\n' into "\r\n" (option dialog)
4. Maximize main dialog on-start (option dialog)
5. Options saving to registry
------------------------------------------------------------------------
1.2.0.1 (08.10.2001)
------------------------------------------------------------------------
1. Hour-glass is shown wile dumping
2. "MFC String" renamed to "MFC/WTL CString" (it turns out that WTL just ported MFC CString, so their internals are the same)
3. Get expression under cursor
------------------------------------------------------------------------
1.2 (05.10.2001)
------------------------------------------------------------------------
1. Rewritten in WTL (previously was in MFC)
2. Main dialog is shown only when some app is under debug
3. WTL is responsible for dialog resizing
------------------------------------------------------------------------
1.1 (04.10.2001)
------------------------------------------------------------------------
1. Length of null-terminated string (char*, WCHAR*) is calculated
2. Resize is slightly rewritten (redraw is faster)
------------------------------------------------------------------------
1.1b (03.10.2001)
------------------------------------------------------------------------
1. Next string types added:
  a) CComBSTR
  b) MFC CString
2. Autoevaluate
3. Combo-box with types
4. Custom evaluate. Useful when user wants to watch BSTR variable, strings of this type are not auto-detectable.
5. Some autodetectable strings with NULL symbol inside where shown improperly. NULL symbol is shown with "°" symbol (bugfix)
------------------------------------------------------------------------
1.0b (27.09.2001)
------------------------------------------------------------------------
1. Everything was rewritten. Faster dump
2. String type autodetection
3. Next string types are supported:
  a) char*
  b) WCHAR* / BSTR
  c) std::basic_string
  d) _bstr_t
4. Expression history
5. Expression is taken from selection
6. Additional string-type specific information
7. Resizable main dialog
8. "Copy" to cplipboard

Author: Eugene Ivakhiv (send comments, bug-reports, requests)

[Index'99] visitors since 31.10.2001