I am conducting a Proof of Concept (POC) to purchase of a license for my organization.
I have created a small POC I am able to traverse backward in rdi overlay not able to traverse forward
using System;
using System.Collections.Generic;
namespace ConsoleApp6
{
// Simple calculator class to add two integers
public class Adder
{
public int Add(int a, int b)
{
return a + b;
}
}
// Production classes: ClassOne ... ClassTen
public class ClassOne
{
public List<string> One(List<string> trace = null)
{
trace = trace ?? new List<string>();
trace.Add("ClassOne.One");
Two(trace);
return trace;
}
public void Two(List<string> trace)
{
trace.Add("ClassOne.Two");
Three(trace);
}
public void Three(List<string> trace)
{
trace.Add("ClassOne.Three");
new ClassTwo().One(trace);
}
}
public class ClassTwo
{
public List<string> One(List<string> trace = null)
{
trace = trace ?? new List<string>();
trace.Add("ClassTwo.One");
Two(trace);
return trace;
}
public void Two(List<string> trace)
{
trace.Add("ClassTwo.Two");
Three(trace);
}
public void Three(List<string> trace)
{
trace.Add("ClassTwo.Three");
new ClassThree().One(trace);
}
}
public class ClassThree
{
public List<string> One(List<string> trace = null)
{
trace = trace ?? new List<string>();
trace.Add("ClassThree.One");
Two(trace);
return trace;
}
public void Two(List<string> trace)
{
trace.Add("ClassThree.Two");
Three(trace);
}
public void Three(List<string> trace)
{
trace.Add("ClassThree.Three");
new ClassFour().One(trace);
}
}
public class ClassFour
{
public List<string> One(List<string> trace = null)
{
trace = trace ?? new List<string>();
trace.Add("ClassFour.One");
Two(trace);
return trace;
}
public void Two(List<string> trace)
{
trace.Add("ClassFour.Two");
Three(trace);
}
public void Three(List<string> trace)
{
trace.Add("ClassFour.Three");
new ClassFive().One(trace);
}
}
public class ClassFive
{
public List<string> One(List<string> trace = null)
{
trace = trace ?? new List<string>();
trace.Add("ClassFive.One");
Two(trace);
return trace;
}
public void Two(List<string> trace)
{
trace.Add("ClassFive.Two");
Three(trace);
}
public void Three(List<string> trace)
{
trace.Add("ClassFive.Three");
new ClassSix().One(trace);
}
}
public class ClassSix
{
public List<string> One(List<string> trace = null)
{
trace = trace ?? new List<string>();
trace.Add("ClassSix.One");
Two(trace);
return trace;
}
public void Two(List<string> trace)
{
trace.Add("ClassSix.Two");
Three(trace);
}
public void Three(List<string> trace)
{
trace.Add("ClassSix.Three");
new ClassSeven().One(trace);
}
}
public class ClassSeven
{
public List<string> One(List<string> trace = null)
{
trace = trace ?? new List<string>();
trace.Add("ClassSeven.One");
Two(trace);
return trace;
}
public void Two(List<string> trace)
{
trace.Add("ClassSeven.Two");
Three(trace);
}
public void Three(List<string> trace)
{
trace.Add("ClassSeven.Three");
new ClassEight().One(trace);
}
}
public class ClassEight
{
public List<string> One(List<string> trace = null)
{
trace = trace ?? new List<string>();
trace.Add("ClassEight.One");
Two(trace);
return trace;
}
public void Two(List<string> trace)
{
trace.Add("ClassEight.Two");
Three(trace);
}
public void Three(List<string> trace)
{
trace.Add("ClassEight.Three");
new ClassNine().One(trace);
}
}
public class ClassNine
{
public List<string> One(List<string> trace = null)
{
trace = trace ?? new List<string>();
trace.Add("ClassNine.One");
Two(trace);
return trace;
}
public void Two(List<string> trace)
{
trace.Add("ClassNine.Two");
Three(trace);
}
public void Three(List<string> trace)
{
trace.Add("ClassNine.Three");
new ClassTen().One(trace);
}
}
public class ClassTen
{
public List<string> One(List<string> trace = null)
{
trace = trace ?? new List<string>();
trace.Add("ClassTen.One");
Two(trace);
return trace;
}
public void Two(List<string> trace)
{
trace.Add("ClassTen.Two");
Three(trace);
}
public void Three(List<string> trace)
{
trace.Add("ClassTen.Three");
// End of chain.
}
}
internal class Program
{
static void Main(string[] args)
{
var adder = new Adder();
int result = adder.Add(2, 3);
Console.WriteLine("Result: " + result);
}
}
}
using ConsoleApp6;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System.Collections.Generic; // add this
namespace UnitTestProject1
{
[TestClass]
public class UnitTest1
{
[TestMethod]
public void ClassOne_Three_AddsExpectedTraceAndCallsClassTwo()
{
// arrange
var trace = new List<string>();
var classOne = new ClassOne();
// act
classOne.Three(trace);
// assert
CollectionAssert.Contains(trace, "ClassOne.Three");
CollectionAssert.Contains(trace, "ClassTwo.One");
CollectionAssert.Contains(trace, "ClassTwo.Two");
CollectionAssert.Contains(trace, "ClassTwo.Three");
}
}
}
Please help regards
Vikram
Remco NCrunch Developer
#18548
31 Dec 2025 08:35 UTC
Hi Vikram,
Thanks for sharing this issue.
Can you confirm which method you are attempting to navigate from, and which one you are trying to navigate into?
Thanks for sharing this issue.
Can you confirm which method you are attempting to navigate from, and which one you are trying to navigate into?
What I did :
ran test case ClassOne_Three_AddsExpectedTraceAndCallsClassTwo through ncrunch
What work :
RDI overlay is visible on all the methods of all the classes
Go to calling frame : click open RDI overlay for classSeven method One I can Go to calling frame i.e classSix method three
What doesn’t work :
for classSeven method One I cannot go to method two forward traversal is not working I have attached screen shot as well
Thanks & Best Regards
Vikram
ran test case ClassOne_Three_AddsExpectedTraceAndCallsClassTwo through ncrunch
What work :
RDI overlay is visible on all the methods of all the classes
Go to calling frame : click open RDI overlay for classSeven method One I can Go to calling frame i.e classSix method three
What doesn’t work :
for classSeven method One I cannot go to method two forward traversal is not working I have attached screen shot as well
Thanks & Best Regards
Vikram
Remco NCrunch Developer
#18550
31 Dec 2025 11:10 UTC
Note that forward traversal works differently to backward traversal.
The backward traversal (i.e. go to calling frame) is via the arrow button at the top of the frame. All forward traversal is done by clicking the embedded arrows next to the methods inside the frame itself. This is because in the call tree there is usually more than one path forward, but only one path backward.
Is there any chance you could send the screen shot through the support contact form?
The backward traversal (i.e. go to calling frame) is via the arrow button at the top of the frame. All forward traversal is done by clicking the embedded arrows next to the methods inside the frame itself. This is because in the call tree there is usually more than one path forward, but only one path backward.
Is there any chance you could send the screen shot through the support contact form?
Thanks got it i was missing embedded arrow
Regards
Vikram
Regards
Vikram
Post a reply
Log in to reply.