private void FireTargetEvent(TargetEventType type, ResultData curFrame, BreakEvent breakEvent = null) { UpdateHitCountData(); TargetEventArgs args = new TargetEventArgs(type); if (type != TargetEventType.TargetExited) { GdbCommandResult res = RunCommand("-stack-info-depth"); int fcount = int.Parse(res.GetValue("depth")); GdbBacktrace bt = new GdbBacktrace(this, activeThread, fcount, curFrame); args.Backtrace = new Backtrace(bt); args.Thread = GetThread(activeThread); args.BreakEvent = breakEvent; } if (_suppressEvents && type == TargetEventType.TargetStopped) { args.IsStopEvent = true; TargetStoppedWhenSuppressed?.Invoke(this, args); } else { OnTargetEvent(args); } }
protected override Backtrace OnGetThreadBacktrace(long processId, long threadId) { ResultData data = SelectThread(threadId); GdbCommandResult res = RunCommand("-stack-info-depth"); int fcount = int.Parse(res.GetValue("depth")); GdbBacktrace bt = new GdbBacktrace(this, threadId, fcount, data != null ? data.GetObject("frame") : null); return(new Backtrace(bt)); }