From 1ccd658c1c5591424c92ee867cfbb9f008989e4f Mon Sep 17 00:00:00 2001 From: Gabrielle Chen Date: Thu, 25 Aug 2022 15:37:06 -0700 Subject: [PATCH 01/10] Work in progress --- src/MIDebugEngine/Engine.Impl/Variables.cs | 2 +- src/MIDebugEngine/Natvis.Impl/Natvis.cs | 18 ++++++++++++++++-- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/src/MIDebugEngine/Engine.Impl/Variables.cs b/src/MIDebugEngine/Engine.Impl/Variables.cs index f087bd593..34434fc83 100644 --- a/src/MIDebugEngine/Engine.Impl/Variables.cs +++ b/src/MIDebugEngine/Engine.Impl/Variables.cs @@ -74,7 +74,7 @@ public ArgumentList(int level, List args) internal sealed class VariableInformation : IVariableInformation { - public string Name { get; private set; } + public string Name { get; set; } public string Value { get; private set; } public string TypeName { get; private set; } public bool IsParameter { get; private set; } diff --git a/src/MIDebugEngine/Natvis.Impl/Natvis.cs b/src/MIDebugEngine/Natvis.Impl/Natvis.cs index 1abb2d780..626fc76ea 100755 --- a/src/MIDebugEngine/Natvis.Impl/Natvis.cs +++ b/src/MIDebugEngine/Natvis.Impl/Natvis.cs @@ -578,7 +578,12 @@ private IVariableInformation[] ExpandVisualized(IVariableInformation variable) continue; } uint size = 0; - string val = GetExpressionValue(item.Size, variable, visualizer.ScopedNames); + + // replace $i with Item.Rank here before passing it into GetExpressionValue + string substitute = item.Size.Replace("$i", item.Rank); + + // string val = GetExpressionValue(item.Size, variable, visualizer.ScopedNames); + string val = GetExpressionValue(substitute, variable, visualizer.ScopedNames); size = MICore.Debugger.ParseUint(val, throwOnError: true); ValuePointerType[] vptrs = item.ValuePointer; foreach (var vp in vptrs) @@ -612,7 +617,16 @@ private IVariableInformation[] ExpandVisualized(IVariableInformation variable) uint maxIndex = currentIndex + MAX_EXPAND > size ? size : currentIndex + MAX_EXPAND; for (uint index = currentIndex; index < maxIndex; ++index) { - children.Add(arrayExpr.Children[index]); + // let's get this working for the 2D case, currently hardcoded + + if (!string.IsNullOrEmpty(item.Rank)) + { + int rank = Int32.Parse(item.Rank, CultureInfo.InvariantCulture); + string s = "[" + index / rank + "," + index % rank + "]"; + arrayExpr.Children[index].Name = s; + } + + children.Add(arrayExpr.Children[index]); // need to change the Name of each Children element here } currentIndex += MAX_EXPAND; From af1d1fe57df480aa4bf71dfb9574e62215aabcf1 Mon Sep 17 00:00:00 2001 From: Gabrielle Chen Date: Fri, 26 Aug 2022 15:22:10 -0700 Subject: [PATCH 02/10] A very hacky solution to get the Natvis 2D array working --- src/MIDebugEngine/Natvis.Impl/Natvis.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/MIDebugEngine/Natvis.Impl/Natvis.cs b/src/MIDebugEngine/Natvis.Impl/Natvis.cs index 626fc76ea..6a172dd5a 100755 --- a/src/MIDebugEngine/Natvis.Impl/Natvis.cs +++ b/src/MIDebugEngine/Natvis.Impl/Natvis.cs @@ -584,7 +584,8 @@ private IVariableInformation[] ExpandVisualized(IVariableInformation variable) // string val = GetExpressionValue(item.Size, variable, visualizer.ScopedNames); string val = GetExpressionValue(substitute, variable, visualizer.ScopedNames); - size = MICore.Debugger.ParseUint(val, throwOnError: true); + int rank = Int32.Parse(item.Rank, CultureInfo.InvariantCulture); + size = MICore.Debugger.ParseUint(val, throwOnError: true) * (uint)rank; // we want size * rank here ValuePointerType[] vptrs = item.ValuePointer; foreach (var vp in vptrs) { @@ -621,7 +622,6 @@ private IVariableInformation[] ExpandVisualized(IVariableInformation variable) if (!string.IsNullOrEmpty(item.Rank)) { - int rank = Int32.Parse(item.Rank, CultureInfo.InvariantCulture); string s = "[" + index / rank + "," + index % rank + "]"; arrayExpr.Children[index].Name = s; } From 4e14befe8f209b377b6c2a822d1ac0df19a71951 Mon Sep 17 00:00:00 2001 From: Gabrielle Chen Date: Wed, 31 Aug 2022 11:29:33 -0700 Subject: [PATCH 03/10] Support indices for multi-dimensional arrays --- src/MIDebugEngine/Natvis.Impl/Natvis.cs | 77 +++++++++++++++++++++---- 1 file changed, 66 insertions(+), 11 deletions(-) diff --git a/src/MIDebugEngine/Natvis.Impl/Natvis.cs b/src/MIDebugEngine/Natvis.Impl/Natvis.cs index 6a172dd5a..3e97aad39 100755 --- a/src/MIDebugEngine/Natvis.Impl/Natvis.cs +++ b/src/MIDebugEngine/Natvis.Impl/Natvis.cs @@ -545,6 +545,53 @@ internal string GetUIVisualizerName(string serviceId, int id) private delegate IVariableInformation Traverse(IVariableInformation node); + // new function here + private string GetDisplayNameFromArrayIndex(int arrayIndex, int rank, int[] dimensions, bool isForward) + { + string retVal = "["; + + int index = arrayIndex; + + int i = rank - 1; + int inc = -1; + int endLoop = -1; + + if (!isForward) + { + i = 0; + inc = 1; + endLoop = rank; + } + + int[] indices = new int[rank]; + + while (i != endLoop) + { + int dimensionSize = dimensions[i]; + int divResult = index / dimensionSize; + int modResult = index % dimensionSize; + + indices[i] = (int)modResult; + index = divResult; + + i += inc; + } + + if (rank != 0) + { + retVal += indices[0]; + for (i = 1; i < rank; i++) + { + retVal += ","; + retVal += indices[i]; + } + } + + retVal += "]"; + + return retVal; + } + private IVariableInformation[] ExpandVisualized(IVariableInformation variable) { VisualizerInfo visualizer = FindType(variable); @@ -577,15 +624,23 @@ private IVariableInformation[] ExpandVisualized(IVariableInformation variable) { continue; } - uint size = 0; + int size = 1; + int rank = Int32.Parse(item.Rank, CultureInfo.InvariantCulture); + int[] dimensions = new int[rank]; - // replace $i with Item.Rank here before passing it into GetExpressionValue - string substitute = item.Size.Replace("$i", item.Rank); + for (int idx = 0; idx < rank; idx++) + { + // replace $i with Item.Rank here before passing it into GetExpressionValue + string substitute = item.Size.Replace("$i", idx.ToString(CultureInfo.InvariantCulture)); + + // string val = GetExpressionValue(item.Size, variable, visualizer.ScopedNames); + // size should be {a, b, c, ...} + string val = GetExpressionValue(substitute, variable, visualizer.ScopedNames); + int tmp = Int32.Parse(val, CultureInfo.InvariantCulture); + dimensions[rank - 1 - idx] = tmp; + size *= tmp; + } - // string val = GetExpressionValue(item.Size, variable, visualizer.ScopedNames); - string val = GetExpressionValue(substitute, variable, visualizer.ScopedNames); - int rank = Int32.Parse(item.Rank, CultureInfo.InvariantCulture); - size = MICore.Debugger.ParseUint(val, throwOnError: true) * (uint)rank; // we want size * rank here ValuePointerType[] vptrs = item.ValuePointer; foreach (var vp in vptrs) { @@ -615,15 +670,15 @@ private IVariableInformation[] ExpandVisualized(IVariableInformation variable) { currentIndex = pvwVariable.StartIndex; } - uint maxIndex = currentIndex + MAX_EXPAND > size ? size : currentIndex + MAX_EXPAND; - for (uint index = currentIndex; index < maxIndex; ++index) + uint maxIndex = currentIndex + MAX_EXPAND > (uint)size ? (uint)size : currentIndex + MAX_EXPAND; + bool isForward = item.Direction == ArrayDirectionType.Forward; + for (int index = (int)currentIndex; index < (int)maxIndex; ++index) { // let's get this working for the 2D case, currently hardcoded if (!string.IsNullOrEmpty(item.Rank)) { - string s = "[" + index / rank + "," + index % rank + "]"; - arrayExpr.Children[index].Name = s; + arrayExpr.Children[index].Name = GetDisplayNameFromArrayIndex(index, rank, dimensions, isForward); // what is dimensions??? } children.Add(arrayExpr.Children[index]); // need to change the Name of each Children element here From 916a97b54b8ffdaa99bfb9e3dfc30ce62974be81 Mon Sep 17 00:00:00 2001 From: Gabrielle Chen Date: Thu, 1 Sep 2022 13:58:15 -0700 Subject: [PATCH 04/10] Fixed vec issue --- src/MIDebugEngine/Natvis.Impl/Natvis.cs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/MIDebugEngine/Natvis.Impl/Natvis.cs b/src/MIDebugEngine/Natvis.Impl/Natvis.cs index 92c3311a0..ca13e9132 100755 --- a/src/MIDebugEngine/Natvis.Impl/Natvis.cs +++ b/src/MIDebugEngine/Natvis.Impl/Natvis.cs @@ -627,12 +627,14 @@ private IVariableInformation[] ExpandVisualized(IVariableInformation variable) } uint totalSize = 0; - int rank = Int32.Parse(item.Rank, CultureInfo.InvariantCulture); - uint[] dimensions = new uint[rank]; + int rank = 0; + uint[] dimensions = null; if (!string.IsNullOrEmpty(item.Rank)) { totalSize = 1; + rank = Int32.Parse(item.Rank, CultureInfo.InvariantCulture); + dimensions = new uint[rank]; for (int idx = 0; idx < rank; idx++) { // replace $i with Item.Rank here before passing it into GetExpressionValue From fa596c9d4ae958edc4346fffd72e75987c6b6e09 Mon Sep 17 00:00:00 2001 From: Gabrielle Chen Date: Fri, 2 Sep 2022 14:55:11 -0700 Subject: [PATCH 05/10] Addressed PR comments --- src/MIDebugEngine/Natvis.Impl/Natvis.cs | 22 +++++----------------- 1 file changed, 5 insertions(+), 17 deletions(-) diff --git a/src/MIDebugEngine/Natvis.Impl/Natvis.cs b/src/MIDebugEngine/Natvis.Impl/Natvis.cs index ca13e9132..2ec9f4dff 100755 --- a/src/MIDebugEngine/Natvis.Impl/Natvis.cs +++ b/src/MIDebugEngine/Natvis.Impl/Natvis.cs @@ -549,8 +549,6 @@ internal string GetUIVisualizerName(string serviceId, int id) private string GetDisplayNameFromArrayIndex(uint arrayIndex, int rank, uint[] dimensions, bool isForward) { StringBuilder displayName = new StringBuilder(); - // displayName.Append('['); - uint index = arrayIndex; int i = rank - 1; @@ -580,16 +578,15 @@ private string GetDisplayNameFromArrayIndex(uint arrayIndex, int rank, uint[] di if (rank != 0) { - displayName.Append(indices[0]); + string format = _process.Engine.CurrentRadix() == 16 ? "{0:X}" : "{0:D}"; + displayName.AppendFormat(CultureInfo.InvariantCulture, format, indices[0]); for (i = 1; i < rank; i++) { displayName.Append(','); - displayName.Append(indices[i]); + displayName.AppendFormat(CultureInfo.InvariantCulture, format, indices[i]); } } - // displayName.Append(']'); - return displayName.ToString(); } @@ -641,7 +638,7 @@ private IVariableInformation[] ExpandVisualized(IVariableInformation variable) string substitute = item.Size.Replace("$i", idx.ToString(CultureInfo.InvariantCulture)); string val = GetExpressionValue(substitute, variable, visualizer.ScopedNames); uint tmp = MICore.Debugger.ParseUint(val, throwOnError: true); - dimensions[rank - 1 - idx] = tmp; + dimensions[idx] = tmp; totalSize *= tmp; } } @@ -694,25 +691,16 @@ private IVariableInformation[] ExpandVisualized(IVariableInformation variable) if (arrayExpr.CountChildren != 0) { uint offset = startIndex + requestedSize; - bool isForward = item.Direction == ArrayDirectionType.Forward; + bool isForward = item.Direction != ArrayDirectionType.Backward; for (uint index = 0; index < requestedSize; ++index) { - /* - currentIndex = pvwVariable.StartIndex; - } - uint maxIndex = currentIndex + MAX_EXPAND > (uint)size ? (uint)size : currentIndex + MAX_EXPAND; - bool isForward = item.Direction == ArrayDirectionType.Forward; - for (uint index = currentIndex; index < maxIndex; ++index) - { - */ string displayName = (startIndex + index).ToString(CultureInfo.InvariantCulture); if (!string.IsNullOrEmpty(item.Rank)) { displayName = GetDisplayNameFromArrayIndex(index, rank, dimensions, isForward); } - // children.Add(arrayExpr.Children[index]); // need to change the Name of each Children element here children.Add(new SimpleWrapper("[" + displayName + "]", _process.Engine, arrayExpr.Children[index])); } From d033fd91c2fbbc5536b1c3c0c3ebb86b0ce9c524 Mon Sep 17 00:00:00 2001 From: Gabrielle Chen Date: Tue, 6 Sep 2022 09:57:26 -0700 Subject: [PATCH 06/10] Addressed more PR comments --- src/MIDebugEngine/Natvis.Impl/Natvis.cs | 95 +++++++++++++------------ 1 file changed, 48 insertions(+), 47 deletions(-) diff --git a/src/MIDebugEngine/Natvis.Impl/Natvis.cs b/src/MIDebugEngine/Natvis.Impl/Natvis.cs index 2ec9f4dff..0b8bcd48e 100755 --- a/src/MIDebugEngine/Natvis.Impl/Natvis.cs +++ b/src/MIDebugEngine/Natvis.Impl/Natvis.cs @@ -545,51 +545,6 @@ internal string GetUIVisualizerName(string serviceId, int id) private delegate IVariableInformation Traverse(IVariableInformation node); - // new function here - private string GetDisplayNameFromArrayIndex(uint arrayIndex, int rank, uint[] dimensions, bool isForward) - { - StringBuilder displayName = new StringBuilder(); - uint index = arrayIndex; - - int i = rank - 1; - int inc = -1; - int endLoop = -1; - - if (!isForward) - { - i = 0; - inc = 1; - endLoop = rank; - } - - uint[] indices = new uint[rank]; - - while (i != endLoop) - { - uint dimensionSize = dimensions[i]; - uint divResult = index / dimensionSize; - uint modResult = index % dimensionSize; - - indices[i] = modResult; - index = divResult; - - i += inc; - } - - if (rank != 0) - { - string format = _process.Engine.CurrentRadix() == 16 ? "{0:X}" : "{0:D}"; - displayName.AppendFormat(CultureInfo.InvariantCulture, format, indices[0]); - for (i = 1; i < rank; i++) - { - displayName.Append(','); - displayName.AppendFormat(CultureInfo.InvariantCulture, format, indices[i]); - } - } - - return displayName.ToString(); - } - private IVariableInformation[] ExpandVisualized(IVariableInformation variable) { VisualizerInfo visualizer = FindType(variable); @@ -630,7 +585,11 @@ private IVariableInformation[] ExpandVisualized(IVariableInformation variable) if (!string.IsNullOrEmpty(item.Rank)) { totalSize = 1; - rank = Int32.Parse(item.Rank, CultureInfo.InvariantCulture); + if (!int.TryParse(item.Rank, NumberStyles.None, CultureInfo.InvariantCulture, out rank)) + { + string expressionValue = GetExpressionValue(item.Rank, variable, visualizer.ScopedNames); + rank = Int32.Parse(expressionValue, CultureInfo.InvariantCulture); + } dimensions = new uint[rank]; for (int idx = 0; idx < rank; idx++) { @@ -696,7 +655,7 @@ private IVariableInformation[] ExpandVisualized(IVariableInformation variable) for (uint index = 0; index < requestedSize; ++index) { string displayName = (startIndex + index).ToString(CultureInfo.InvariantCulture); - if (!string.IsNullOrEmpty(item.Rank)) + if (rank > 0) { displayName = GetDisplayNameFromArrayIndex(index, rank, dimensions, isForward); } @@ -1360,5 +1319,47 @@ private string GetExpressionValue(string expression, IVariableInformation variab expressionVariable.SyncEval(); return FormatDisplayString(expressionVariable).value; } + + private string GetDisplayNameFromArrayIndex(uint arrayIndex, int rank, uint[] dimensions, bool isForward) + { + StringBuilder displayName = new StringBuilder(); + uint index = arrayIndex; + + int i = rank - 1; + int inc = -1; + int endLoop = -1; + + if (!isForward) + { + i = 0; + inc = 1; + endLoop = rank; + } + + uint[] indices = new uint[rank]; + + while (i != endLoop) + { + uint dimensionSize = dimensions[i]; + uint divResult = index / dimensionSize; + uint modResult = index % dimensionSize; + + indices[i] = modResult; + index = divResult; + + i += inc; + } + + string format = _process.Engine.CurrentRadix() == 16 ? "0x{0:X}" : "{0:D}"; + displayName.AppendFormat(CultureInfo.InvariantCulture, format, indices[0]); + for (i = 1; i < rank; i++) + { + displayName.Append(','); + displayName.AppendFormat(CultureInfo.InvariantCulture, format, indices[i]); + } + + return displayName.ToString(); + } + } } From 252c596cf42f81d5750b8203c009c15af2c8c444 Mon Sep 17 00:00:00 2001 From: Gabrielle Chen Date: Wed, 7 Sep 2022 11:21:24 -0700 Subject: [PATCH 07/10] Add Natvis test for multi-dimensional arrays --- test/CppTests/Tests/NatvisTests.cs | 4 +++ test/CppTests/debuggees/natvis/src/C.h | 27 +++++++++++++++++++ test/CppTests/debuggees/natvis/src/main.cpp | 3 +++ .../natvis/src/visualizer_files/Simple.natvis | 12 +++++++++ 4 files changed, 46 insertions(+) create mode 100644 test/CppTests/debuggees/natvis/src/C.h diff --git a/test/CppTests/Tests/NatvisTests.cs b/test/CppTests/Tests/NatvisTests.cs index 918e4cadb..7dcda98c0 100644 --- a/test/CppTests/Tests/NatvisTests.cs +++ b/test/CppTests/Tests/NatvisTests.cs @@ -175,6 +175,10 @@ public void TestArrayItems(ITestSettings settings) // Index element for ArrayItems Assert.Equal("20", ll.GetVariable("[5]").Value); Assert.Equal("51", ll.GetVariable("[More...]").GetVariable("[51]").Value); + + // Multi-dimensional array + var c = currentFrame.GetVariable("c"); + Assert.Equal("3", c.GetVariable("[1,1]").Value); } runner.Expects.ExitedEvent(exitCode: 0).TerminatedEvent().AfterContinue(); diff --git a/test/CppTests/debuggees/natvis/src/C.h b/test/CppTests/debuggees/natvis/src/C.h new file mode 100644 index 000000000..0f756ae6c --- /dev/null +++ b/test/CppTests/debuggees/natvis/src/C.h @@ -0,0 +1,27 @@ +class C +{ +public: + int m_size1; + int m_size2; + bool m_fUseSize1; + int* m_pData; + + C(int size1, int size2, bool fUseSize1) + { + m_size1 = size1; + m_size2 = size2; + m_fUseSize1 = fUseSize1; + + m_pData = new int[GetSize()]; + + for (int i = 0; i < GetSize(); i++) + { + m_pData[i] = i; + } + } + + int GetSize() + { + return m_fUseSize1 ? m_size1 : m_size2; + } +}; \ No newline at end of file diff --git a/test/CppTests/debuggees/natvis/src/main.cpp b/test/CppTests/debuggees/natvis/src/main.cpp index 9feefd6bd..1368e81ee 100644 --- a/test/CppTests/debuggees/natvis/src/main.cpp +++ b/test/CppTests/debuggees/natvis/src/main.cpp @@ -3,6 +3,7 @@ #include "SimpleVector.h" #include "SimpleArray.h" #include "SimpleClass.h" +#include "C.h" class SimpleDisplayObject { @@ -45,5 +46,7 @@ int main(int argc, char** argv) SimpleClass* simpleClass = nullptr; simpleClass = new SimpleClass(); + C c(5, 8, false); + return 0; } \ No newline at end of file diff --git a/test/CppTests/debuggees/natvis/src/visualizer_files/Simple.natvis b/test/CppTests/debuggees/natvis/src/visualizer_files/Simple.natvis index 4a2fb05da..47c0ca2e4 100644 --- a/test/CppTests/debuggees/natvis/src/visualizer_files/Simple.natvis +++ b/test/CppTests/debuggees/natvis/src/visualizer_files/Simple.natvis @@ -57,4 +57,16 @@ + + + C + + + Forward + 2 + ($i == 1) ? 2 : m_size2/2 + m_pData + + + \ No newline at end of file From d61036958b8fcb0325f371d240bc5f3568c48613 Mon Sep 17 00:00:00 2001 From: Gabrielle Chen Date: Wed, 7 Sep 2022 14:23:08 -0700 Subject: [PATCH 08/10] Update ReturnSourceLine value --- test/CppTests/Tests/NatvisTests.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/CppTests/Tests/NatvisTests.cs b/test/CppTests/Tests/NatvisTests.cs index 7dcda98c0..e22ca62c8 100644 --- a/test/CppTests/Tests/NatvisTests.cs +++ b/test/CppTests/Tests/NatvisTests.cs @@ -36,7 +36,7 @@ public NatvisTests(ITestOutputHelper outputHelper) : base(outputHelper) private const string NatvisName = "natvis"; private const string NatvisSourceName = "main.cpp"; - private const int ReturnSourceLine = 48; + private const int ReturnSourceLine = 51; [Theory] [RequiresTestSettings] From 9ede477e0261aa41cdd870545e11351ad9da01de Mon Sep 17 00:00:00 2001 From: Gabrielle Chen Date: Thu, 8 Sep 2022 13:33:49 -0700 Subject: [PATCH 09/10] Address PR comments --- src/MIDebugEngine/Natvis.Impl/Natvis.cs | 6 +++++- test/CppTests/Tests/NatvisTests.cs | 4 ++-- test/CppTests/debuggees/natvis/src/{C.h => SimpleMatrix.h} | 4 ++-- test/CppTests/debuggees/natvis/src/main.cpp | 4 ++-- 4 files changed, 11 insertions(+), 7 deletions(-) rename test/CppTests/debuggees/natvis/src/{C.h => SimpleMatrix.h} (84%) diff --git a/src/MIDebugEngine/Natvis.Impl/Natvis.cs b/src/MIDebugEngine/Natvis.Impl/Natvis.cs index 0b8bcd48e..9927883c9 100755 --- a/src/MIDebugEngine/Natvis.Impl/Natvis.cs +++ b/src/MIDebugEngine/Natvis.Impl/Natvis.cs @@ -590,6 +590,10 @@ private IVariableInformation[] ExpandVisualized(IVariableInformation variable) string expressionValue = GetExpressionValue(item.Rank, variable, visualizer.ScopedNames); rank = Int32.Parse(expressionValue, CultureInfo.InvariantCulture); } + if (rank <= 0) + { + throw new Exception("Invalid rank value"); + } dimensions = new uint[rank]; for (int idx = 0; idx < rank; idx++) { @@ -655,7 +659,7 @@ private IVariableInformation[] ExpandVisualized(IVariableInformation variable) for (uint index = 0; index < requestedSize; ++index) { string displayName = (startIndex + index).ToString(CultureInfo.InvariantCulture); - if (rank > 0) + if (rank > 1) { displayName = GetDisplayNameFromArrayIndex(index, rank, dimensions, isForward); } diff --git a/test/CppTests/Tests/NatvisTests.cs b/test/CppTests/Tests/NatvisTests.cs index e22ca62c8..37bc46b8f 100644 --- a/test/CppTests/Tests/NatvisTests.cs +++ b/test/CppTests/Tests/NatvisTests.cs @@ -177,8 +177,8 @@ public void TestArrayItems(ITestSettings settings) Assert.Equal("51", ll.GetVariable("[More...]").GetVariable("[51]").Value); // Multi-dimensional array - var c = currentFrame.GetVariable("c"); - Assert.Equal("3", c.GetVariable("[1,1]").Value); + var matrix = currentFrame.GetVariable("matrix"); + Assert.Equal("3", matrix.GetVariable("[1,1]").Value); } runner.Expects.ExitedEvent(exitCode: 0).TerminatedEvent().AfterContinue(); diff --git a/test/CppTests/debuggees/natvis/src/C.h b/test/CppTests/debuggees/natvis/src/SimpleMatrix.h similarity index 84% rename from test/CppTests/debuggees/natvis/src/C.h rename to test/CppTests/debuggees/natvis/src/SimpleMatrix.h index 0f756ae6c..e315e749b 100644 --- a/test/CppTests/debuggees/natvis/src/C.h +++ b/test/CppTests/debuggees/natvis/src/SimpleMatrix.h @@ -1,4 +1,4 @@ -class C +class SimpleMatrix { public: int m_size1; @@ -6,7 +6,7 @@ class C bool m_fUseSize1; int* m_pData; - C(int size1, int size2, bool fUseSize1) + SimpleMatrix(int size1, int size2, bool fUseSize1) { m_size1 = size1; m_size2 = size2; diff --git a/test/CppTests/debuggees/natvis/src/main.cpp b/test/CppTests/debuggees/natvis/src/main.cpp index 1368e81ee..8cc695507 100644 --- a/test/CppTests/debuggees/natvis/src/main.cpp +++ b/test/CppTests/debuggees/natvis/src/main.cpp @@ -3,7 +3,7 @@ #include "SimpleVector.h" #include "SimpleArray.h" #include "SimpleClass.h" -#include "C.h" +#include "SimpleMatrix.h" class SimpleDisplayObject { @@ -46,7 +46,7 @@ int main(int argc, char** argv) SimpleClass* simpleClass = nullptr; simpleClass = new SimpleClass(); - C c(5, 8, false); + SimpleMatrix matrix(5, 8, false); return 0; } \ No newline at end of file From 3c39f57f7dc0b3a313806d512a06e00a020d10b1 Mon Sep 17 00:00:00 2001 From: Gabrielle Chen Date: Fri, 9 Sep 2022 10:03:24 -0700 Subject: [PATCH 10/10] Fix natvis file with correct SimpleMatrix name --- .../debuggees/natvis/src/visualizer_files/Simple.natvis | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/CppTests/debuggees/natvis/src/visualizer_files/Simple.natvis b/test/CppTests/debuggees/natvis/src/visualizer_files/Simple.natvis index 47c0ca2e4..0c3df50fb 100644 --- a/test/CppTests/debuggees/natvis/src/visualizer_files/Simple.natvis +++ b/test/CppTests/debuggees/natvis/src/visualizer_files/Simple.natvis @@ -58,8 +58,8 @@ - - C + + SimpleMatrix Forward