## OverviewThis extension allows to display graphical representation of C++ and C# variables during debugging. Currently it supports Boost.Geometry and Boost.Polygon models, Boost.Variant, STL/Boost containers of values and points as well as C-style arrays, C# arrays and List. The extension has the following components: **Debugger visualizers**for Boost.Array, Boost.Container, Boost.Geometry, Boost.MPL, Boost.Polygon, Boost.Tuple and Boost.Variant**Geometry Watch**tool window displaying geometries in a common coordinate system, e.g. Boost.Geometry or Boost.Polygon polygons**Graphical Watch**tool window displaying graphical representation of variables, e.g. Boost.Geometry models or vectors of values**Plot Watch**tool window displaying plot representation of variables, e.g. vector of doubles
## Use- place a breakpoint somewhere in the code
- start debugging
- after a breakpoint hit enable the tool window from the menu
**View**->**Other Windows**->**Geometry Watch****View**->**Other Windows**->**Graphical Watch****View**->**Other Windows**->**Plot Watch**
- write the name of a variable in an edit box on the list
Available on GitHub: https://github.com/awulkiew/graphical-debugging Feel free to report bugs, propose features and create pull requests. Any help is appreciated. ## Details## Debugger visualizersSupported: - Boost.Array: array
- Boost.Container: vector, static_vector
- Boost.Geometry:
- de9im: mask, matrix, static_mask
- detail: turn_info, traversal_turn_info, turn_operation, turn_operation_linear, traversal_turn_operation, segment_ratio
- index: rtree, varray
- model: point, point_xy, box, segment, referring_segment, polygon, multi_point, multi_linestring, multi_polygon, nsphere
- Boost.MPL: int_, size_t, integral_c, vector, vector_c
- Boost.Polygon: point_data, interval_data, segment_data, rectangle_data, polygon_data, polygon_with_holes_data
- Boost.Tuple: tuple, cons
- Boost.Variant: variant
## Geometry WatchWatch window displaying graphical representation of variables in a single image. This allows to compare the variables easily. Supported: - Containers of points
- C-style array
- Pointer to elements with size specifier e.g.:
`ptr,5` - Sequence of containers of point coordinates e.g.:
`vec_x;vec_y` - STL: array, vector, deque, list
- Boost.Array: array
- Boost.Container: vector, static_vector
- C#: array, List
- 2D cartesian geometries
- Boost.Geometry: point, point_xy, box, segment, referring_segment, polygon, multi_point, multi_linestring, multi_polygon, nsphere
- Boost.Polygon: point_data, segment_data, rectangle_data, polygon_data, polygon_with_holes_data
- STL: pair
- user-defined point type
- Non-cartesian geometries (spherical_equatorial and geographic)
- Boost.Geometry: point, box, segment, referring_segment, polygon, multi_point, multi_linestring, multi_polygon, nsphere
- Complex numbers
- STL: complex
- Variants of geometries
- Boost.Variant: variant
Geometries in spherical_equatorial and geographic coordinate systems are displayed in a way allowing to see what coordinates were used to define a geometry. Note that various libraries may require coordinates in a certain range. This extension tries to display any coordinates as good as possible. Segments may be densified in order to reflect the curvature of the globe. This behavior is enabled by default but can be disabled in where:
## Graphical WatchWatch window displaying graphical representations of variables in a list view. Each variable is placed and visualized in a separate row. Supported: - Containers of elements convertible to double and containers of points
- C-style array
- Pointer to elements with size specifier e.g.:
`ptr,5` - Sequence of containers of point coordinates e.g.:
`vec_x;vec_y` - STL: array, vector, deque, list
- Boost.Array: array
- Boost.Container: vector, static_vector
- C#: array, List
- 2D cartesian geometries
- Boost.Geometry: point, point_xy, box, segment, referring_segment, polygon, multi_point, multi_linestring, multi_polygon, nsphere
- Boost.Polygon: point_data, segment_data, rectangle_data, polygon_data, polygon_with_holes_data
- STL: pair
- user-defined point type
- Non-cartesian geometries (spherical_equatorial and geographic)
- Boost.Geometry: point, box, segment, referring_segment, polygon, multi_point, multi_linestring, multi_polygon, nsphere
- Complex numbers
- STL: complex
- Variants of geometries
- Boost.Variant: variant
Geometries in spherical_equatorial and geographic coordinate systems are displayed in a convenient, compact way. Segments may be densified in order to reflect the curvature of the globe. This behavior is enabled by default but can be disabled in where:
## Plot WatchWatch window displaying plot representation of variables in a single image. Type of plot can be set in Supported containers of values convertible to double and containers of points: - C-style array
- Pointer to elements with size specifier e.g.:
`ptr,5` - Sequence of containers of point coordinates e.g.:
`vec_x;vec_y` - STL: array, vector, deque, list
- Boost.Array: array
- Boost.Container: vector, static_vector
- C#: array, List
where points can be of any supported point type (coordinate system is ignored): - STL: complex, pair
- Boost.Geometry: point, point_xy
- Boost.Polygon: point_data
- user-defined point type
## OptionsOptions for each Watch can be found under ## User-defined typesThe extension offers basic support for user-defined point types. You can define points in XML file based on type identifier and X and Y members and set path to this file in options under
Basic support has limitations: - based on identifier so no template parameters, no specializations
- no support for user-defined coordinate system, cartesian is used by default
Let me know if you need something more advanced. See more examples at GitHub. ## Zooming/CroppingGeometry Watch and Plot Watch has zooming/cropping feature. Mouse wheel can be used to zoom in/out as well. ## Direct memory accessThe extension attempts to obtain data through direct memory access if possible. From this feature benefit all supported containers of fundamental numeric types and geometries using such coordinate types. E.g.: `int arr[5]` `std::array<float, 5>` `std::vector<double>` `std::deque<std::pair<float> >` `std::list<std::complex<double> >` `boost::container::vector<int>` `boost::geometry::model::linestring< boost::geometry::model::point<double, 2, boost::geometry::cs::cartesian> >` `boost::polygon::polygon_data<int>` `double[]` (C#)- etc.
This behavior is enabled by default but can be disabled in options under ## ThemesThe extension supports Visual Studio themes. The visualization of variables may be drawn in two versions, dark or light depending on the brightness of the theme background color. |