12341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen//===-- ProcessMessage.cpp --------------------------------------*- C++ -*-===// 22341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen// 32341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen// The LLVM Compiler Infrastructure 42341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen// 52341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen// This file is distributed under the University of Illinois Open Source 62341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen// License. See LICENSE.TXT for details. 72341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen// 82341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen//===----------------------------------------------------------------------===// 92341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen 102341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen#include "ProcessMessage.h" 112341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen 12010a8d85100602eff09bd61a85987efd0001188aMatt Kopec#include <sstream> 13010a8d85100602eff09bd61a85987efd0001188aMatt Kopec 142341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chenusing namespace lldb_private; 152341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen 16010a8d85100602eff09bd61a85987efd0001188aMatt Kopecnamespace { 17010a8d85100602eff09bd61a85987efd0001188aMatt Kopec 18010a8d85100602eff09bd61a85987efd0001188aMatt Kopecinline void AppendFaultAddr(std::string& str, lldb::addr_t addr) 19010a8d85100602eff09bd61a85987efd0001188aMatt Kopec{ 20010a8d85100602eff09bd61a85987efd0001188aMatt Kopec std::stringstream ss; 21010a8d85100602eff09bd61a85987efd0001188aMatt Kopec ss << " (fault address: 0x" << std::hex << addr << ")"; 22010a8d85100602eff09bd61a85987efd0001188aMatt Kopec str += ss.str(); 23010a8d85100602eff09bd61a85987efd0001188aMatt Kopec} 24010a8d85100602eff09bd61a85987efd0001188aMatt Kopec 25010a8d85100602eff09bd61a85987efd0001188aMatt Kopec} 26010a8d85100602eff09bd61a85987efd0001188aMatt Kopec 272341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chenconst char * 28010a8d85100602eff09bd61a85987efd0001188aMatt KopecProcessMessage::GetCrashReasonString(CrashReason reason, lldb::addr_t fault_addr) 292341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen{ 30010a8d85100602eff09bd61a85987efd0001188aMatt Kopec static std::string str; 312341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen 322341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen switch (reason) 332341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen { 342341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen default: 352341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen assert(false && "invalid CrashReason"); 362341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen break; 372341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen 382341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen case eInvalidAddress: 392341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen str = "invalid address"; 40010a8d85100602eff09bd61a85987efd0001188aMatt Kopec AppendFaultAddr(str, fault_addr); 412341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen break; 422341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen case ePrivilegedAddress: 432341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen str = "address access protected"; 44010a8d85100602eff09bd61a85987efd0001188aMatt Kopec AppendFaultAddr(str, fault_addr); 452341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen break; 462341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen case eIllegalOpcode: 472341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen str = "illegal instruction"; 482341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen break; 492341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen case eIllegalOperand: 502341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen str = "illegal instruction operand"; 512341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen break; 522341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen case eIllegalAddressingMode: 532341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen str = "illegal addressing mode"; 542341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen break; 552341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen case eIllegalTrap: 562341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen str = "illegal trap"; 572341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen break; 582341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen case ePrivilegedOpcode: 592341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen str = "privileged instruction"; 602341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen break; 612341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen case ePrivilegedRegister: 622341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen str = "privileged register"; 632341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen break; 642341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen case eCoprocessorError: 652341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen str = "coprocessor error"; 662341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen break; 672341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen case eInternalStackError: 682341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen str = "internal stack error"; 692341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen break; 702341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen case eIllegalAlignment: 712341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen str = "illegal alignment"; 722341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen break; 732341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen case eIllegalAddress: 742341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen str = "illegal address"; 752341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen break; 762341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen case eHardwareError: 772341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen str = "hardware error"; 782341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen break; 792341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen case eIntegerDivideByZero: 802341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen str = "integer divide by zero"; 812341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen break; 822341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen case eIntegerOverflow: 832341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen str = "integer overflow"; 842341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen break; 852341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen case eFloatDivideByZero: 862341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen str = "floating point divide by zero"; 872341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen break; 882341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen case eFloatOverflow: 892341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen str = "floating point overflow"; 902341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen break; 912341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen case eFloatUnderflow: 922341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen str = "floating point underflow"; 932341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen break; 942341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen case eFloatInexactResult: 952341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen str = "inexact floating point result"; 962341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen break; 972341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen case eFloatInvalidOperation: 982341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen str = "invalid floating point operation"; 992341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen break; 1002341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen case eFloatSubscriptRange: 1012341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen str = "invalid floating point subscript range"; 1022341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen break; 1032341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen } 1042341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen 105010a8d85100602eff09bd61a85987efd0001188aMatt Kopec return str.c_str(); 1062341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen} 1072341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen 1082341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chenconst char * 1092341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny ChenProcessMessage::PrintCrashReason(CrashReason reason) 1102341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen{ 1112341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen#ifdef LLDB_CONFIGURATION_BUILDANDINTEGRATION 1122341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen // Just return the code in asci for integration builds. 1132341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen chcar str[8]; 1142341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen sprintf(str, "%d", reason); 1152341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen#else 1162341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen const char *str = NULL; 1172341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen 1182341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen switch (reason) 1192341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen { 1202341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen case eInvalidCrashReason: 1212341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen str = "eInvalidCrashReason"; 1222341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen break; 1232341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen 1242341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen // SIGSEGV crash reasons. 1252341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen case eInvalidAddress: 1262341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen str = "eInvalidAddress"; 1272341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen break; 1282341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen case ePrivilegedAddress: 1292341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen str = "ePrivilegedAddress"; 1302341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen break; 1312341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen 1322341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen // SIGILL crash reasons. 1332341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen case eIllegalOpcode: 1342341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen str = "eIllegalOpcode"; 1352341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen break; 1362341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen case eIllegalOperand: 1372341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen str = "eIllegalOperand"; 1382341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen break; 1392341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen case eIllegalAddressingMode: 1402341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen str = "eIllegalAddressingMode"; 1412341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen break; 1422341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen case eIllegalTrap: 1432341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen str = "eIllegalTrap"; 1442341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen break; 1452341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen case ePrivilegedOpcode: 1462341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen str = "ePrivilegedOpcode"; 1472341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen break; 1482341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen case ePrivilegedRegister: 1492341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen str = "ePrivilegedRegister"; 1502341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen break; 1512341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen case eCoprocessorError: 1522341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen str = "eCoprocessorError"; 1532341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen break; 1542341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen case eInternalStackError: 1552341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen str = "eInternalStackError"; 1562341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen break; 1572341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen 1582341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen // SIGBUS crash reasons: 1592341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen case eIllegalAlignment: 1602341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen str = "eIllegalAlignment"; 1612341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen break; 1622341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen case eIllegalAddress: 1632341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen str = "eIllegalAddress"; 1642341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen break; 1652341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen case eHardwareError: 1662341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen str = "eHardwareError"; 1672341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen break; 1682341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen 1692341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen // SIGFPE crash reasons: 1702341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen case eIntegerDivideByZero: 1712341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen str = "eIntegerDivideByZero"; 1722341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen break; 1732341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen case eIntegerOverflow: 1742341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen str = "eIntegerOverflow"; 1752341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen break; 1762341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen case eFloatDivideByZero: 1772341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen str = "eFloatDivideByZero"; 1782341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen break; 1792341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen case eFloatOverflow: 1802341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen str = "eFloatOverflow"; 1812341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen break; 1822341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen case eFloatUnderflow: 1832341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen str = "eFloatUnderflow"; 1842341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen break; 1852341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen case eFloatInexactResult: 1862341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen str = "eFloatInexactResult"; 1872341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen break; 1882341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen case eFloatInvalidOperation: 1892341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen str = "eFloatInvalidOperation"; 1902341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen break; 1912341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen case eFloatSubscriptRange: 1922341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen str = "eFloatSubscriptRange"; 1932341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen break; 1942341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen } 1952341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen#endif 1962341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen 1972341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen return str; 1982341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen} 1992341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen 2002341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chenconst char * 2012341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny ChenProcessMessage::PrintCrashReason() const 2022341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen{ 2032341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen return PrintCrashReason(m_crash_reason); 2042341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen} 2052341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen 2062341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chenconst char * 2072341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny ChenProcessMessage::PrintKind(Kind kind) 2082341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen{ 2092341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen#ifdef LLDB_CONFIGURATION_BUILDANDINTEGRATION 2102341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen // Just return the code in asci for integration builds. 2112341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen chcar str[8]; 2122341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen sprintf(str, "%d", reason); 2132341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen#else 2142341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen const char *str = NULL; 2152341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen 2162341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen switch (kind) 2172341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen { 2182341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen case eInvalidMessage: 2192341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen str = "eInvalidMessage"; 2202341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen break; 2212341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen case eExitMessage: 2222341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen str = "eExitMessage"; 2232341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen break; 2242341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen case eLimboMessage: 2252341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen str = "eLimboMessage"; 2262341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen break; 2272341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen case eSignalMessage: 2282341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen str = "eSignalMessage"; 2292341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen break; 2302341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen case eSignalDeliveredMessage: 2312341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen str = "eSignalDeliveredMessage"; 2322341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen break; 2332341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen case eTraceMessage: 2342341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen str = "eTraceMessage"; 2352341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen break; 2362341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen case eBreakpointMessage: 2372341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen str = "eBreakpointMessage"; 2382341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen break; 2393d4d51cd1bdef32ab61ba9e1de75d5a4f4c1dbedMatt Kopec case eWatchpointMessage: 2403d4d51cd1bdef32ab61ba9e1de75d5a4f4c1dbedMatt Kopec str = "eWatchpointMessage"; 2413d4d51cd1bdef32ab61ba9e1de75d5a4f4c1dbedMatt Kopec break; 2422341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen case eCrashMessage: 2432341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen str = "eCrashMessage"; 2442341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen break; 245f1fda3748c39c92d2e79aeba0715baffabd3286bMatt Kopec case eNewThreadMessage: 246f1fda3748c39c92d2e79aeba0715baffabd3286bMatt Kopec str = "eNewThreadMessage"; 247f1fda3748c39c92d2e79aeba0715baffabd3286bMatt Kopec break; 2482341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen } 2492341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen#endif 2502341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen 2512341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen return str; 2522341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen} 2532341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen 2542341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chenconst char * 2552341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny ChenProcessMessage::PrintKind() const 2562341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen{ 2572341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen return PrintKind(m_kind); 2582341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen} 259