So far I was able to run and this sample that implement this interface and using it for debug C++ apps. I try to implement IDkmCustomVisualizer in C#, aiming use it to debug CLR apps. Is this possible ? I retrofitted Hello Wrold sample, where added class that implement IDkmCustomVisualizer and changed HelloWorld.vsdconfigxml. But nothing works, debugger in experimental instance do not use this implementation. Tried with VS 2017 and 2019 Community.
my IDkmCustomVisualizer implementation:
public class CSF : IDkmCustomVisualizer
{
void crf()
{
System.IO.File.Delete("c:/uuu.txt");
System.IO.File.WriteAllText("c:/uuu.txt", "ooo");
}
void IDkmCustomVisualizer.EvaluateVisualizedExpression(DkmVisualizedExpression visualizedExpression, out DkmEvaluationResult resultObject)
{
crf();
visualizedExpression.EvaluateVisualizedExpression(out resultObject);
}
void IDkmCustomVisualizer.UseDefaultEvaluationBehavior(DkmVisualizedExpression visualizedExpression, out bool useDefaultEvaluationBehavior, out DkmEvaluationResult defaultEvaluationResult)
{
crf();
visualizedExpression.UseDefaultEvaluationBehavior(out useDefaultEvaluationBehavior, out defaultEvaluationResult);
}
void IDkmCustomVisualizer.GetChildren(DkmVisualizedExpression visualizedExpression, int initialRequestSize, DkmInspectionContext inspectionContext, out DkmChildVisualizedExpression[] initialChildren, out DkmEvaluationResultEnumContext enumContext)
{
crf();
visualizedExpression.GetChildren(initialRequestSize, inspectionContext, out initialChildren, out enumContext);
}
void IDkmCustomVisualizer.GetItems(DkmVisualizedExpression visualizedExpression, DkmEvaluationResultEnumContext enumContext, int startIndex, int count, out DkmChildVisualizedExpression[] items)
{
crf();
visualizedExpression.GetItems(enumContext, startIndex, count, out items);
}
void IDkmCustomVisualizer.SetValueAsString(DkmVisualizedExpression visualizedExpression, string value, int timeout, out string errorText)
{
crf();
visualizedExpression.SetValueAsString(value, timeout, out errorText);
}
string IDkmCustomVisualizer.GetUnderlyingString(DkmVisualizedExpression visualizedExpression)
{
crf();
var ret = visualizedExpression.GetUnderlyingString();
return ret;
}
}
and HelloWorld.vsdconfigxml
<?xml version="1.0" encoding="utf-8"?>
<Configuration xmlns="http://schemas.microsoft.com/vstudio/vsdconfig/2008">
<ManagedComponent
ComponentId="C4256689-AC45-4B10-BFD3-4036CEE1863A"
ComponentLevel="9992000"
AssemblyName="HelloWorld">
<Class Name="HelloWorld.CSF" >
<Implements>
<InterfaceGroup>
<NoFilter></NoFilter>
<Interface Name="IDkmCustomVisualizer"/>
</InterfaceGroup>
</Implements>
</Class>
</ManagedComponent>
</Configuration>
Thanks in advance
Pierson's advice for analyze logs was helpful, and finally I was able to run IDkmCustomVisualizer implemented in C# but only for debugging C++ apps. For managed apps it is not called. Found good alternative IDkmLanguageExpressionEvaluator that implemented in C# is called by both managed and unmagaged (C++) apps.