protected void BuildBackTraceNodes(StackBackTrace backtrace, ref MemTreeNode leaf, bool reverse) { var frames = backtrace.Frames; int start, end, dir; if (reverse) { start = 0; end = frames.Count - 1; dir = 1; } else { start = frames.Count - 1; end = 0; dir = -1; } for (int i = start; i != end; i += dir) { var frame = frames[i]; var name = frame.Symbol; var filename = frame.FileName; var lineno = frame.LineNumber; if (SuppressedSymbols.Contains(name)) continue; leaf = leaf.GetChild(name); leaf.Icon = "symbol"; leaf.FileName = filename; leaf.LineNumber = lineno; } }
void IMemEventHandler.OnHeapFree(ulong ptr, StackBackTrace backtrace, double time) { ulong size; if (m_TrackedAddresses.TryGetValue(ptr, out size)) { m_SearchResults.AddObject(new Result { EventType = "Free", Address = ptr, Size = size, BackTrace = backtrace, Time = time }); m_TrackedAddresses.Remove(ptr); } }
protected void BuildBackTraceNodes(StackBackTrace backtrace, ref MemTreeNode leaf, bool reverse) { var frames = backtrace.Frames; int start, end, dir; if (reverse) { start = 0; end = frames.Count - 1; dir = 1; } else { start = frames.Count - 1; end = 0; dir = -1; } for (int i = start; i != end; i += dir) { var frame = frames[i]; var name = frame.Symbol; var filename = frame.FileName; var lineno = frame.LineNumber; if (SuppressedSymbols.Contains(name)) { continue; } leaf = leaf.GetChild(name); leaf.Icon = "symbol"; leaf.FileName = filename; leaf.LineNumber = lineno; } }
void IMemEventHandler.OnHeapAllocate(ulong ptr, ulong size, int scope_type, string scope_data_str, StackBackTrace backtrace, double time) { if (ptr + size > m_Start && ptr < m_End) { m_SearchResults.AddObject(new Result { EventType = "Allocate", Address = ptr, Size = size, BackTrace = backtrace, Time = time }); m_TrackedAddresses.Add(ptr, size); } }