display variables

This commit is contained in:
Matt Parker
2025-08-30 13:05:30 +10:00
parent 6580276041
commit 5b1ea76dcd
2 changed files with 18 additions and 1 deletions

View File

@@ -151,14 +151,16 @@ public class DebuggingService
var stackTrace = _debugProtocolHost.SendRequestSync(new StackTraceRequest { ThreadId = thread.Id });
var frame = stackTrace.StackFrames!.FirstOrDefault();
if (frame == null) continue;
// Infrastructure.dll!Infrastructure.DependencyInjection.AddInfrastructure(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Microsoft.Extensions.Configuration.IConfiguration configuration) Line 23
var name = frame.Name;
if (name == "[External Code]") continue; // TODO: handle this case
// Infrastructure.dll!Infrastructure.DependencyInjection.AddInfrastructure(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Microsoft.Extensions.Configuration.IConfiguration configuration) Line 23
// need to parse out the class name, method name, namespace, assembly name
var methodName = name.Split('!')[1].Split('(')[0];
var className = methodName.Split('.').Reverse().Skip(1).First();
var namespaceName = string.Join('.', methodName.Split('.').Reverse().Skip(2).Reverse());
var assemblyName = name.Split('!')[0];
methodName = methodName.Split('.').Reverse().First();
var frameModel = new StackFrameModel
{
Id = frame.Id,

View File

@@ -58,5 +58,20 @@ public partial class ThreadsVariablesSubTab : Control
}
});
var currentFrame = stoppedThread.StackFrames.First();
var variableScenes = currentFrame.Scopes.SelectMany(s => s.Variables).Select(v =>
{
var variableListItem = _threadListItemScene.Instantiate<Control>();
variableListItem.GetNode<Label>("Label").Text = $"{v.Name}";
return variableListItem;
}).ToList();
await this.InvokeAsync(() =>
{
foreach (var scene in variableScenes)
{
_variablesVboxContainer.AddChild(scene);
}
});
}
}