public virtual String GetText() { if (m_tag == 0) { ulong kbs = GetAllocatedSize() >> 10; String text = m_symbol.functionName + " (" + kbs + "kb, " + GetNumAllocatedBlocks() + " block(s) , " + GetPercentageOfParentSize().ToString("N") + "%)"; return(text); } else { String stag; if (m_tagCRC) { stag = TagDict.GetTag(m_tag); } else { char[] text = new char[4]; text[3] = (char)(m_tag & 0xFF); text[2] = (char)((m_tag >> 8) & 0xFF); text[1] = (char)((m_tag >> 16) & 0xFF); text[0] = (char)((m_tag >> 24) & 0xFF); stag = new string(text); } ulong kbs = GetAllocatedSize() >> 10; string ret = stag + " (" + kbs + "kb, " + GetNumAllocatedBlocks() + " block(s) , " + GetPercentageOfParentSize().ToString("N") + "%)"; return(ret); } }
public string GetTagString() { string tagString; if (m_tagCRC) { tagString = TagDict.GetTag(m_tag); } else { char[] text = new char[4]; text[3] = (char)(m_tag & 0xFF); text[2] = (char)((m_tag >> 8) & 0xFF); text[1] = (char)((m_tag >> 16) & 0xFF); text[0] = (char)((m_tag >> 24) & 0xFF); tagString = new string(text); } return(tagString); }
private void HandleMessage(byte[] msgData) { SocketPacket.CommandID commandId = (SocketPacket.CommandID)(msgData[0]); switch (commandId) { case SocketPacket.CommandID.INITIAL_SETTINGS: { ClientPlatform.Platform platform = (ClientPlatform.Platform)msgData[1]; //if (platform == 2) //{ // PS3StackTracer ps3tracer = new PS3StackTracer(m_config.PS3BinPath, // m_config.Verbose, m_config.UseCr, // m_config.UseError); // StackTracer = ps3tracer; //} m_64bit = (platform == ClientPlatform.Platform.WINDOWS_64); if (m_64bit) { m_addressSize = 8; } m_maxTagLen = (int)msgData[2]; m_maxSnapshotNameLen = (int)msgData[3]; m_maxTracedVarNameLen = (int)msgData[4]; System.Diagnostics.Debug.Assert(m_maxTagLen > 0); System.Diagnostics.Debug.Assert(m_maxSnapshotNameLen > 0); System.Diagnostics.Debug.Assert(m_maxTracedVarNameLen > 0); break; } case SocketPacket.CommandID.MODULE_INFO: { ulong modBase = GetAddress(msgData, 1); int offset = 1 + m_addressSize; ulong modSize = GetInt(msgData, offset); offset += 4; string debugFileName = GetStringFromBuffer(msgData, offset, 128); Invoke(m_delegateAddModuleInfo, new Object[] { debugFileName, modBase, modSize }); m_initialized = true; break; } case SocketPacket.CommandID.ALLOC: { HandleAlloc(msgData); break; } case SocketPacket.CommandID.FREE: { ulong addr = GetAddress(msgData, 1); MemOperation op = new MemOperation(MemOperation.Type.Free); op.UserData = addr; m_memOperations.Add(op); m_globalSnapshot.RemoveBlock(addr); m_dirty = true; // System.Console.Out.WriteLine("Free " + addr.ToString("X") + " " + (m_memOperations.Count - 1)); break; } case SocketPacket.CommandID.TAG_BLOCK: { ulong addr = GetInt(msgData, 1); string tag = GetStringFromBuffer(msgData, (1 + m_addressSize), m_maxTagLen); ulong crc = TagDict.AddTag(tag); m_globalSnapshot.TagBlock(addr, crc); break; } case SocketPacket.CommandID.FRAME_END: { // Only add frame end marker if something interesting happened in this frame. // Otherwise we'd be just wasting memory. if (m_numMemOpsPrevFrame < m_memOperations.Count) { MemOperation op = new MemOperation(MemOperation.Type.FrameEnd); m_memOperations.Add(op); ++m_frame; ++m_numFrames; } m_numMemOpsPrevFrame = m_memOperations.Count; break; } case SocketPacket.CommandID.ADD_SNAPSHOT: { string snapshotName = GetStringFromBuffer(msgData, 1, m_maxSnapshotNameLen); //System.Console.Out.WriteLine("Snapshot " + snapshotName); SnapshotDesc desc = CreateSnapshotDesc(snapshotName); Invoke(m_delegateAddSnapshot, desc); break; } case SocketPacket.CommandID.TRACED_VAR: { int tracedVarValue = (int)GetInt(msgData, 1); string tracedVarName = GetStringFromBuffer(msgData, 5, m_maxTracedVarNameLen); SetTracedVar(tracedVarName, tracedVarValue); break; } default: { System.Diagnostics.Debug.Fail("Unknown command ID: " + commandId); break; } } }