void CallBreak(VMachine vm, bool manulSwichPkgReg) { string pkgReg; if (manulSwichPkgReg) { pkgReg = _regPackageName.Value; } else { if (vm.CallStack.Count > 1) { pkgReg = string.Empty; } else { pkgReg = vm.CurrFrame.PkgName; } } var vms = new VMState(vm, pkgReg); SafeCall(delegate { if (OnBreak != null) { OnBreak(vms); } }); }
void OnBreak(VMState vms) { codeList.SetCurrLine(vms.Location); registerList.Items.Clear(); foreach (var str in vms.Register) { registerList.Items.Add(str); } dataStackList.Items.Clear(); foreach (var str in vms.DataStack) { dataStackList.Items.Add(str); } callStackList.Items.Clear(); foreach (var str in vms.CallStack) { callStackList.Items.Add(str); } if (string.IsNullOrEmpty(vms.RegPackage)) { pkgSel.SelectedIndex = 0; } else { if (pkgSel.SelectedItem as string != vms.RegPackage) { foreach (var i in pkgSel.Items) { var pkgName = i as string; if (pkgName == vms.RegPackage) { pkgSel.SelectedItem = i; break; } } } } }