Welcome Guest! To enable all features please Login or Register.

Notification

Icon
Error

Rdi Not working for me
vikram
#1 Posted : Wednesday, December 31, 2025 6:02:55 AM(UTC)
Rank: Newbie

Groups: Registered
Joined: 12/23/2025(UTC)
Posts: 5
Location: India

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
#2 Posted : Wednesday, December 31, 2025 8:35:15 AM(UTC)
Rank: NCrunch Developer

Groups: Administrators
Joined: 4/16/2011(UTC)
Posts: 7,450

Thanks: 1011 times
Was thanked: 1357 time(s) in 1260 post(s)
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?
vikram
#3 Posted : Wednesday, December 31, 2025 9:01:12 AM(UTC)
Rank: Newbie

Groups: Registered
Joined: 12/23/2025(UTC)
Posts: 5
Location: India

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
Remco
#4 Posted : Wednesday, December 31, 2025 11:10:38 AM(UTC)
Rank: NCrunch Developer

Groups: Administrators
Joined: 4/16/2011(UTC)
Posts: 7,450

Thanks: 1011 times
Was thanked: 1357 time(s) in 1260 post(s)
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?
vikram
#5 Posted : Wednesday, December 31, 2025 11:26:33 AM(UTC)
Rank: Newbie

Groups: Registered
Joined: 12/23/2025(UTC)
Posts: 5
Location: India

Thanks got it i was missing embedded arrow


Regards
Vikram
Users browsing this topic
Guest
Forum Jump  
You cannot post new topics in this forum.
You cannot reply to topics in this forum.
You cannot delete your posts in this forum.
You cannot edit your posts in this forum.
You cannot create polls in this forum.
You cannot vote in polls in this forum.

YAF | YAF © 2003-2011, Yet Another Forum.NET
This page was generated in 0.108 seconds.
Trial NCrunch
Take NCrunch for a spin
Do your fingers a favour and supercharge your testing workflow
Free Download