diff --git a/clang/utils/clangVisualizers.txt b/clang/utils/clangVisualizers.txt new file mode 100644 index 000000000000..f9f834b76c50 --- /dev/null +++ b/clang/utils/clangVisualizers.txt @@ -0,0 +1,44 @@ + +[Visualizer] + +llvm::SmallVector<*,*>{ + preview ( + #( + "[", + ($T1*)$e.EndX - ($T1*)$e.BeginX, + "](", + #array( + expr: (($T1*)$e.BeginX)[$i], + size: ($T1*)$e.EndX - ($T1*)$e.BeginX + ), + ")" + ) + ) + + children ( + #( + #([size] : ($T1*)$e.EndX - ($T1*)$e.BeginX), + #([capacity] : ($T1*)$e.CapacityX - ($T1*)$e.BeginX), + #array( + expr: (($T1*)$e.BeginX)[$i], + size: ($T1*)$e.EndX - ($T1*)$e.BeginX + ) + ) + ) +} + +llvm::StringRef{ + preview ([$e.Data,s]) + stringview ([$e.Data,sb]) + + children ( + #( + #([size] : $e.Length), + #array(expr: $e.Data[$i], size: $e.Length) + ) + ) +} + +clang::Token{ + preview((clang::tok::TokenKind)(int)$e.Kind) +} \ No newline at end of file diff --git a/clang/www/hacking.html b/clang/www/hacking.html index 969a39c55998..b65768c9873a 100644 --- a/clang/www/hacking.html +++ b/clang/www/hacking.html @@ -85,6 +85,28 @@ wrapped Type* which you can then dump. + +
The file utils/clangVisualizers.txt provides debugger visualizers that make debugging + of more complex data types much easier.
+There are two ways to install them:
+ +[Note: To disable the visualizer for any specific variable, type + variable_name,! inside the watch window.]
+