forked from OSchip/llvm-project
parent
6f62cf80d0
commit
6a7f33387d
|
@ -6,7 +6,7 @@ If you have re-installed a new OS, please delete all old lldb_codesign items
|
|||
from your keychain. There will be 3: a code signing certification and a public
|
||||
and private key. Reboot after deleting them. You will also need to delete and
|
||||
build folders that contained old signed items. The darwin kernel will cache
|
||||
code sigining using the executable's file system node, so you will need to
|
||||
code signing using the executable's file system node, so you will need to
|
||||
delete the file so the kernel clears its cache.
|
||||
|
||||
If you don't have one yet you will need to:
|
||||
|
|
|
@ -371,7 +371,7 @@ encoding The encoding type of the register which must be one of:
|
|||
uint (unsigned integer)
|
||||
sint (signed integer)
|
||||
ieee754 (IEEE 754 float)
|
||||
vector (vector regsiter)
|
||||
vector (vector register)
|
||||
|
||||
format The preferred format for display of this register. The value must
|
||||
be one of:
|
||||
|
@ -512,7 +512,7 @@ drwxrwxr-x 5 username groupname 4096 Aug 15 21:36 source.cpp
|
|||
// PRIORITY TO IMPLEMENT
|
||||
// High. This packet is usually very easy to implement and can help
|
||||
// LLDB select the correct plug-ins for the job based on the target
|
||||
// triple information that is suppied.
|
||||
// triple information that is supplied.
|
||||
//----------------------------------------------------------------------
|
||||
|
||||
LLDB supports a host info call that gets all sorts of details of the system
|
||||
|
|
|
@ -55,7 +55,7 @@ public:
|
|||
StopListeningForEvents (const lldb::SBBroadcaster& broadcaster,
|
||||
uint32_t event_mask);
|
||||
|
||||
// Returns true if an event was recieved, false if we timed out.
|
||||
// Returns true if an event was received, false if we timed out.
|
||||
bool
|
||||
WaitForEvent (uint32_t num_seconds,
|
||||
lldb::SBEvent &event);
|
||||
|
|
|
@ -87,7 +87,7 @@ protected:
|
|||
|
||||
typedef enum
|
||||
{
|
||||
eFDTypeFile, // Other FD requireing read/write
|
||||
eFDTypeFile, // Other FD requiring read/write
|
||||
eFDTypeSocket, // Socket requiring send/recv
|
||||
eFDTypeSocketUDP // Unconnected UDP socket requiring sendto/recvfrom
|
||||
} FDType;
|
||||
|
|
|
@ -94,7 +94,7 @@ public:
|
|||
enum ContextType
|
||||
{
|
||||
eContextInvalid = 0,
|
||||
// Read an instruciton opcode from memory
|
||||
// Read an instruction opcode from memory
|
||||
eContextReadOpcode,
|
||||
|
||||
// Usually used for writing a register value whose source value is an
|
||||
|
@ -223,13 +223,13 @@ public:
|
|||
struct ISAAndImmediate
|
||||
{
|
||||
uint32_t isa;
|
||||
uint32_t unsigned_data32; // immdiate data
|
||||
uint32_t unsigned_data32; // immediate data
|
||||
} ISAAndImmediate;
|
||||
|
||||
struct ISAAndImmediateSigned
|
||||
{
|
||||
uint32_t isa;
|
||||
int32_t signed_data32; // signed immdiate data
|
||||
int32_t signed_data32; // signed immediate data
|
||||
} ISAAndImmediateSigned;
|
||||
|
||||
uint32_t isa;
|
||||
|
|
|
@ -76,7 +76,7 @@ public:
|
|||
StopListeningForEvents (Broadcaster* broadcaster,
|
||||
uint32_t event_mask);
|
||||
|
||||
// Returns true if an event was recieved, false if we timed out.
|
||||
// Returns true if an event was received, false if we timed out.
|
||||
bool
|
||||
WaitForEvent (const TimeValue *timeout,
|
||||
lldb::EventSP &event_sp);
|
||||
|
|
|
@ -78,7 +78,7 @@ public:
|
|||
//------------------------------------------------------------------
|
||||
/// Destructor.
|
||||
///
|
||||
/// Destrory the condition, mutex, and T objects.
|
||||
/// Destroy the condition, mutex, and T objects.
|
||||
//------------------------------------------------------------------
|
||||
~Predicate ()
|
||||
{
|
||||
|
@ -112,7 +112,7 @@ public:
|
|||
/// The new value to set.
|
||||
///
|
||||
/// @param[in] broadcast_type
|
||||
/// A value indicating when and if to broadast. See the
|
||||
/// A value indicating when and if to broadcast. See the
|
||||
/// PredicateBroadcastType enumeration for details.
|
||||
///
|
||||
/// @see Predicate::Broadcast()
|
||||
|
@ -140,7 +140,7 @@ public:
|
|||
/// The bits to set in \a m_value.
|
||||
///
|
||||
/// @param[in] broadcast_type
|
||||
/// A value indicating when and if to broadast. See the
|
||||
/// A value indicating when and if to broadcast. See the
|
||||
/// PredicateBroadcastType enumeration for details.
|
||||
///
|
||||
/// @see Predicate::Broadcast()
|
||||
|
@ -168,7 +168,7 @@ public:
|
|||
/// The bits to clear in \a m_value.
|
||||
///
|
||||
/// @param[in] broadcast_type
|
||||
/// A value indicating when and if to broadast. See the
|
||||
/// A value indicating when and if to broadcast. See the
|
||||
/// PredicateBroadcastType enumeration for details.
|
||||
///
|
||||
/// @see Predicate::Broadcast()
|
||||
|
@ -464,7 +464,7 @@ public:
|
|||
|
||||
protected:
|
||||
//----------------------------------------------------------------------
|
||||
// pthread condition and mutex variable to controll access and allow
|
||||
// pthread condition and mutex variable to control access and allow
|
||||
// blocking between the main thread and the spotlight index thread.
|
||||
//----------------------------------------------------------------------
|
||||
T m_value; ///< The templatized value T that we are protecting access to
|
||||
|
@ -477,7 +477,7 @@ private:
|
|||
/// Broadcast if needed.
|
||||
///
|
||||
/// Check to see if we need to broadcast to our condition variable
|
||||
/// depedning on the \a old_value and on the \a broadcast_type.
|
||||
/// depending on the \a old_value and on the \a broadcast_type.
|
||||
///
|
||||
/// If \a broadcast_type is eBroadcastNever, no broadcast will be
|
||||
/// sent.
|
||||
|
|
|
@ -52,7 +52,7 @@ public:
|
|||
StopListeningForEvents (const lldb::SBBroadcaster& broadcaster,
|
||||
uint32_t event_mask);
|
||||
|
||||
// Returns true if an event was recieved, false if we timed out.
|
||||
// Returns true if an event was received, false if we timed out.
|
||||
bool
|
||||
WaitForEvent (uint32_t num_seconds,
|
||||
lldb::SBEvent &event);
|
||||
|
|
|
@ -609,7 +609,7 @@ ConnectionFileDescriptor::Write (const void *src, size_t src_len, ConnectionStat
|
|||
|
||||
switch (m_fd_send_type)
|
||||
{
|
||||
case eFDTypeFile: // Other FD requireing read/write
|
||||
case eFDTypeFile: // Other FD requiring read/write
|
||||
#ifndef LLDB_DISABLE_POSIX
|
||||
do
|
||||
{
|
||||
|
@ -647,7 +647,7 @@ ConnectionFileDescriptor::Write (const void *src, size_t src_len, ConnectionStat
|
|||
{
|
||||
switch (m_fd_send_type)
|
||||
{
|
||||
case eFDTypeFile: // Other FD requireing read/write
|
||||
case eFDTypeFile: // Other FD requiring read/write
|
||||
log->Printf ("%p ConnectionFileDescriptor::Write() ::write (fd = %i, src = %p, src_len = %" PRIu64 ") => %" PRIi64 " (error = %s)",
|
||||
static_cast<void*>(this), m_fd_send,
|
||||
static_cast<const void*>(src),
|
||||
|
@ -1443,7 +1443,7 @@ ConnectionFileDescriptor::ConnectUDP (const char *host_and_port, Error *error_pt
|
|||
if (m_fd_recv == -1)
|
||||
return eConnectionStatusError;
|
||||
|
||||
// At this point we have setup the recieve port, now we need to
|
||||
// At this point we have setup the receive port, now we need to
|
||||
// setup the UDP send socket
|
||||
|
||||
struct addrinfo hints;
|
||||
|
@ -1525,7 +1525,7 @@ ConnectionFileDescriptor::SetSocketReceiveTimeout (uint32_t timeout_usec)
|
|||
{
|
||||
switch (m_fd_recv_type)
|
||||
{
|
||||
case eFDTypeFile: // Other FD requireing read/write
|
||||
case eFDTypeFile: // Other FD requiring read/write
|
||||
break;
|
||||
|
||||
case eFDTypeSocket: // Socket requiring send/recv
|
||||
|
|
|
@ -393,7 +393,7 @@ DataExtractor::GetU8 (offset_t *offset_ptr) const
|
|||
//
|
||||
// RETURNS the non-NULL buffer pointer upon successful extraction of
|
||||
// all the requested bytes, or NULL when the data is not available in
|
||||
// the buffer due to being out of bounds, or unsufficient data.
|
||||
// the buffer due to being out of bounds, or insufficient data.
|
||||
//----------------------------------------------------------------------
|
||||
void *
|
||||
DataExtractor::GetU8 (offset_t *offset_ptr, void *dst, uint32_t count) const
|
||||
|
@ -474,7 +474,7 @@ DataExtractor::GetU64_unchecked (offset_t *offset_ptr) const
|
|||
//
|
||||
// RETURNS the non-NULL buffer pointer upon successful extraction of
|
||||
// all the requested bytes, or NULL when the data is not available
|
||||
// in the buffer due to being out of bounds, or unsufficient data.
|
||||
// in the buffer due to being out of bounds, or insufficient data.
|
||||
//----------------------------------------------------------------------
|
||||
void *
|
||||
DataExtractor::GetU16 (offset_t *offset_ptr, void *void_dst, uint32_t count) const
|
||||
|
@ -537,7 +537,7 @@ DataExtractor::GetU32 (offset_t *offset_ptr) const
|
|||
//
|
||||
// RETURNS the non-NULL buffer pointer upon successful extraction of
|
||||
// all the requested bytes, or NULL when the data is not available
|
||||
// in the buffer due to being out of bounds, or unsufficient data.
|
||||
// in the buffer due to being out of bounds, or insufficient data.
|
||||
//----------------------------------------------------------------------
|
||||
void *
|
||||
DataExtractor::GetU32 (offset_t *offset_ptr, void *void_dst, uint32_t count) const
|
||||
|
@ -1108,7 +1108,7 @@ DataExtractor::CopyByteOrderedData (offset_t src_offset,
|
|||
// follows the NULL terminator byte.
|
||||
//
|
||||
// If the offset pointed to by "offset_ptr" is out of bounds, or if
|
||||
// "length" is non-zero and there aren't enough avaialable
|
||||
// "length" is non-zero and there aren't enough available
|
||||
// bytes, NULL will be returned and "offset_ptr" will not be
|
||||
// updated.
|
||||
//----------------------------------------------------------------------
|
||||
|
@ -1134,7 +1134,7 @@ DataExtractor::GetCStr (offset_t *offset_ptr) const
|
|||
|
||||
// We reached the end of the data without finding a NULL C string
|
||||
// terminator. Fall through and return NULL otherwise anyone that
|
||||
// would have used the result as a C string can wonder into
|
||||
// would have used the result as a C string can wander into
|
||||
// unknown memory...
|
||||
}
|
||||
return NULL;
|
||||
|
@ -1827,7 +1827,7 @@ DataExtractor::Dump (Stream *s,
|
|||
{
|
||||
case llvm::Triple::x86:
|
||||
case llvm::Triple::x86_64:
|
||||
// clang will assert when contructing the apfloat if we use a 16 byte integer value
|
||||
// clang will assert when constructing the apfloat if we use a 16 byte integer value
|
||||
if (GetAPInt (*this, &offset, 10, apint))
|
||||
{
|
||||
llvm::APFloat apfloat (ast->getFloatTypeSemantics(ast->LongDoubleTy), apint);
|
||||
|
|
|
@ -75,7 +75,7 @@ static DebuggerList &
|
|||
GetDebuggerList()
|
||||
{
|
||||
// hide the static debugger list inside a singleton accessor to avoid
|
||||
// global init contructors
|
||||
// global init constructors
|
||||
static DebuggerList g_list;
|
||||
return g_list;
|
||||
}
|
||||
|
@ -475,7 +475,7 @@ LoadPluginCallback
|
|||
{
|
||||
// Try and recurse into anything that a directory or symbolic link.
|
||||
// We must also do this for unknown as sometimes the directory enumeration
|
||||
// might be enurating a file system that doesn't have correct file type
|
||||
// might be enumerating a file system that doesn't have correct file type
|
||||
// information.
|
||||
return FileSpec::eEnumerateDirectoryResultEnter;
|
||||
}
|
||||
|
@ -1007,7 +1007,7 @@ Debugger::PopIOHandler (const IOHandlerSP& pop_reader_sp)
|
|||
Mutex::Locker locker (m_input_reader_stack.GetMutex());
|
||||
|
||||
// The reader on the stop of the stack is done, so let the next
|
||||
// read on the stack referesh its prompt and if there is one...
|
||||
// read on the stack refresh its prompt and if there is one...
|
||||
if (!m_input_reader_stack.IsEmpty())
|
||||
{
|
||||
IOHandlerSP reader_sp(m_input_reader_stack.Top());
|
||||
|
|
|
@ -153,7 +153,7 @@ LoadPluginCallback
|
|||
{
|
||||
// Try and recurse into anything that a directory or symbolic link.
|
||||
// We must also do this for unknown as sometimes the directory enumeration
|
||||
// might be enurating a file system that doesn't have correct file type
|
||||
// might be enumerating a file system that doesn't have correct file type
|
||||
// information.
|
||||
return FileSpec::eEnumerateDirectoryResultEnter;
|
||||
}
|
||||
|
|
|
@ -47,7 +47,7 @@ OptionValueProperties::OptionValueProperties (const OptionValueProperties &globa
|
|||
const size_t num_properties = m_properties.size();
|
||||
for (size_t i=0; i<num_properties; ++i)
|
||||
{
|
||||
// Duplicate any values that are not global when contructing properties from
|
||||
// Duplicate any values that are not global when constructing properties from
|
||||
// a global copy
|
||||
if (m_properties[i].IsGlobal() == false)
|
||||
{
|
||||
|
@ -164,7 +164,7 @@ OptionValueProperties::GetSubValue (const ExecutionContext *exe_ctx,
|
|||
// OptionValueProperties for a lldb_private::Target might implement:
|
||||
// "target.run-args{arch==i386}" -- only set run args if the arch is i386
|
||||
// "target.run-args{path=/tmp/a/b/c/a.out}" -- only set run args if the path matches
|
||||
// "target.run-args{basename==test&&arch==x86_64}" -- only set run args if exectable basename is "test" and arch is "x86_64"
|
||||
// "target.run-args{basename==test&&arch==x86_64}" -- only set run args if executable basename is "test" and arch is "x86_64"
|
||||
if (sub_name[1])
|
||||
{
|
||||
const char *predicate_start = sub_name + 1;
|
||||
|
|
|
@ -2169,7 +2169,7 @@ EmulateInstructionARM::EmulateVPOP (const uint32_t opcode, const ARMEncoding enc
|
|||
addr_t sp_offset = imm32;
|
||||
addr_t addr = sp;
|
||||
uint32_t i;
|
||||
uint64_t data; // uint64_t to accomodate 64-bit registers.
|
||||
uint64_t data; // uint64_t to accommodate 64-bit registers.
|
||||
|
||||
EmulateInstruction::Context context;
|
||||
if (conditional)
|
||||
|
@ -3626,7 +3626,7 @@ EmulateInstructionARM::EmulateLDMDA (const uint32_t opcode, const ARMEncoding en
|
|||
}
|
||||
|
||||
// LDMDB loads multiple registers from consecutive memory locations using an address from a base register. The
|
||||
// consecutive memory lcoations end just below this address, and the address of the lowest of those locations can
|
||||
// consecutive memory locations end just below this address, and the address of the lowest of those locations can
|
||||
// be optionally written back to the base register.
|
||||
bool
|
||||
EmulateInstructionARM::EmulateLDMDB (const uint32_t opcode, const ARMEncoding encoding)
|
||||
|
@ -4033,7 +4033,7 @@ EmulateInstructionARM::EmulateLDRRtRnImm (const uint32_t opcode, const ARMEncodi
|
|||
}
|
||||
|
||||
// STM (Store Multiple Increment After) stores multiple registers to consecutive memory locations using an address
|
||||
// from a base register. The consecutive memory locations start at this address, and teh address just above the last
|
||||
// from a base register. The consecutive memory locations start at this address, and the address just above the last
|
||||
// of those locations can optionally be written back to the base register.
|
||||
bool
|
||||
EmulateInstructionARM::EmulateSTM (const uint32_t opcode, const ARMEncoding encoding)
|
||||
|
@ -4588,7 +4588,7 @@ EmulateInstructionARM::EmulateSTMIB (const uint32_t opcode, const ARMEncoding en
|
|||
return true;
|
||||
}
|
||||
|
||||
// STR (store immediate) calcualtes an address from a base register value and an immediate offset, and stores a word
|
||||
// STR (store immediate) calculates an address from a base register value and an immediate offset, and stores a word
|
||||
// from a register to memory. It can use offset, post-indexed, or pre-indexed addressing.
|
||||
bool
|
||||
EmulateInstructionARM::EmulateSTRThumb (const uint32_t opcode, const ARMEncoding encoding)
|
||||
|
@ -5076,7 +5076,7 @@ EmulateInstructionARM::EmulateSTRBThumb (const uint32_t opcode, const ARMEncodin
|
|||
}
|
||||
|
||||
// STRH (register) calculates an address from a base register value and an offset register value, and stores a
|
||||
// halfword from a register to memory. The offset register alue can be shifted left by 0, 1, 2, or 3 bits.
|
||||
// halfword from a register to memory. The offset register value can be shifted left by 0, 1, 2, or 3 bits.
|
||||
bool
|
||||
EmulateInstructionARM::EmulateSTRHRegister (const uint32_t opcode, const ARMEncoding encoding)
|
||||
{
|
||||
|
@ -5941,7 +5941,7 @@ EmulateInstructionARM::EmulateLDRImmediateARM (const uint32_t opcode, const ARME
|
|||
}
|
||||
|
||||
// LDR (register) calculates an address from a base register value and an offset register value, loads a word
|
||||
// from memory, and writes it to a resgister. The offset register value can optionally be shifted.
|
||||
// from memory, and writes it to a register. The offset register value can optionally be shifted.
|
||||
bool
|
||||
EmulateInstructionARM::EmulateLDRRegister (const uint32_t opcode, const ARMEncoding encoding)
|
||||
{
|
||||
|
@ -11033,7 +11033,7 @@ EmulateInstructionARM::EmulateVSTM (const uint32_t opcode, const ARMEncoding enc
|
|||
}
|
||||
|
||||
// A8.6.320
|
||||
// This instruciton loads a single extension register fronm memory, using an address from an ARM core register, with
|
||||
// This instruction loads a single extension register from memory, using an address from an ARM core register, with
|
||||
// an optional offset.
|
||||
bool
|
||||
EmulateInstructionARM::EmulateVLDR (const uint32_t opcode, ARMEncoding encoding)
|
||||
|
@ -11638,7 +11638,7 @@ EmulateInstructionARM::EmulateVLD1Single (const uint32_t opcode, const ARMEncodi
|
|||
}
|
||||
|
||||
// A8.6.391 VST1 (multiple single elements)
|
||||
// Vector Store (multiple single elements) stores elements to memory from one, two, three, or four regsiters, without
|
||||
// Vector Store (multiple single elements) stores elements to memory from one, two, three, or four registers, without
|
||||
// interleaving. Every element of each register is stored.
|
||||
bool
|
||||
EmulateInstructionARM::EmulateVST1Multiple (const uint32_t opcode, ARMEncoding encoding)
|
||||
|
@ -13019,7 +13019,7 @@ EmulateInstructionARM::ConditionPassed (const uint32_t opcode, bool *is_conditio
|
|||
break;
|
||||
case 7:
|
||||
// Always execute (cond == 0b1110, or the special 0b1111 which gives
|
||||
// opcodes different meanings, but always means execution happpens.
|
||||
// opcodes different meanings, but always means execution happens.
|
||||
if (is_conditional)
|
||||
*is_conditional = false;
|
||||
result = true;
|
||||
|
|
|
@ -53,7 +53,7 @@ PlatformLinux::CreateInstance (bool force, const ArchSpec *arch)
|
|||
|
||||
#if defined(__linux__)
|
||||
// Only accept "unknown" for the vendor if the host is linux and
|
||||
// it "unknown" wasn't specified (it was just returned becasue it
|
||||
// it "unknown" wasn't specified (it was just returned because it
|
||||
// was NOT specified_
|
||||
case llvm::Triple::UnknownArch:
|
||||
create = !arch->TripleVendorWasSpecified();
|
||||
|
@ -72,7 +72,7 @@ PlatformLinux::CreateInstance (bool force, const ArchSpec *arch)
|
|||
|
||||
#if defined(__linux__)
|
||||
// Only accept "unknown" for the OS if the host is linux and
|
||||
// it "unknown" wasn't specified (it was just returned becasue it
|
||||
// it "unknown" wasn't specified (it was just returned because it
|
||||
// was NOT specified)
|
||||
case llvm::Triple::UnknownOS:
|
||||
create = !arch->TripleOSWasSpecified();
|
||||
|
|
|
@ -94,7 +94,7 @@ PlatformDarwinKernel::CreateInstance (bool force, const ArchSpec *arch)
|
|||
break;
|
||||
|
||||
// Only accept "unknown" for vendor if the host is Apple and
|
||||
// it "unknown" wasn't specified (it was just returned becasue it
|
||||
// it "unknown" wasn't specified (it was just returned because it
|
||||
// was NOT specified)
|
||||
case llvm::Triple::UnknownArch:
|
||||
create = !arch->TripleVendorWasSpecified();
|
||||
|
@ -111,7 +111,7 @@ PlatformDarwinKernel::CreateInstance (bool force, const ArchSpec *arch)
|
|||
case llvm::Triple::MacOSX:
|
||||
break;
|
||||
// Only accept "vendor" for vendor if the host is Apple and
|
||||
// it "unknown" wasn't specified (it was just returned becasue it
|
||||
// it "unknown" wasn't specified (it was just returned because it
|
||||
// was NOT specified)
|
||||
case llvm::Triple::UnknownOS:
|
||||
create = !arch->TripleOSWasSpecified();
|
||||
|
|
|
@ -89,7 +89,7 @@ PlatformMacOSX::CreateInstance (bool force, const ArchSpec *arch)
|
|||
|
||||
#if defined(__APPLE__)
|
||||
// Only accept "unknown" for vendor if the host is Apple and
|
||||
// it "unknown" wasn't specified (it was just returned becasue it
|
||||
// it "unknown" wasn't specified (it was just returned because it
|
||||
// was NOT specified)
|
||||
case llvm::Triple::UnknownArch:
|
||||
create = !arch->TripleVendorWasSpecified();
|
||||
|
@ -108,7 +108,7 @@ PlatformMacOSX::CreateInstance (bool force, const ArchSpec *arch)
|
|||
break;
|
||||
#if defined(__APPLE__)
|
||||
// Only accept "vendor" for vendor if the host is Apple and
|
||||
// it "unknown" wasn't specified (it was just returned becasue it
|
||||
// it "unknown" wasn't specified (it was just returned because it
|
||||
// was NOT specified)
|
||||
case llvm::Triple::UnknownOS:
|
||||
create = !arch->TripleOSWasSpecified();
|
||||
|
|
|
@ -105,7 +105,7 @@ PlatformRemoteiOS::CreateInstance (bool force, const ArchSpec *arch)
|
|||
|
||||
#if defined(__APPLE__)
|
||||
// Only accept "unknown" for the vendor if the host is Apple and
|
||||
// it "unknown" wasn't specified (it was just returned becasue it
|
||||
// it "unknown" wasn't specified (it was just returned because it
|
||||
// was NOT specified)
|
||||
case llvm::Triple::UnknownArch:
|
||||
create = !arch->TripleVendorWasSpecified();
|
||||
|
@ -125,7 +125,7 @@ PlatformRemoteiOS::CreateInstance (bool force, const ArchSpec *arch)
|
|||
|
||||
#if defined(__APPLE__)
|
||||
// Only accept "unknown" for the OS if the host is Apple and
|
||||
// it "unknown" wasn't specified (it was just returned becasue it
|
||||
// it "unknown" wasn't specified (it was just returned because it
|
||||
// was NOT specified)
|
||||
case llvm::Triple::UnknownOS:
|
||||
create = !arch->TripleOSWasSpecified();
|
||||
|
|
|
@ -80,7 +80,7 @@ PlatformiOSSimulator::CreateInstance (bool force, const ArchSpec *arch)
|
|||
|
||||
#if defined(__APPLE__)
|
||||
// Only accept "unknown" for the vendor if the host is Apple and
|
||||
// it "unknown" wasn't specified (it was just returned becasue it
|
||||
// it "unknown" wasn't specified (it was just returned because it
|
||||
// was NOT specified)
|
||||
case llvm::Triple::UnknownArch:
|
||||
create = !arch->TripleVendorWasSpecified();
|
||||
|
@ -101,7 +101,7 @@ PlatformiOSSimulator::CreateInstance (bool force, const ArchSpec *arch)
|
|||
|
||||
#if defined(__APPLE__)
|
||||
// Only accept "unknown" for the OS if the host is Apple and
|
||||
// it "unknown" wasn't specified (it was just returned becasue it
|
||||
// it "unknown" wasn't specified (it was just returned because it
|
||||
// was NOT specified)
|
||||
case llvm::Triple::UnknownOS:
|
||||
create = !arch->TripleOSWasSpecified();
|
||||
|
|
|
@ -200,7 +200,7 @@ GDBRemoteRegisterContext::ReadRegisterBytes (const RegisterInfo *reg_info, DataE
|
|||
const uint32_t prim_reg = reg_info->value_regs[idx];
|
||||
if (prim_reg == LLDB_INVALID_REGNUM)
|
||||
break;
|
||||
// We have a valid primordial regsiter as our constituent.
|
||||
// We have a valid primordial register as our constituent.
|
||||
// Grab the corresponding register info.
|
||||
const RegisterInfo *prim_reg_info = GetRegisterInfoAtIndex(prim_reg);
|
||||
if (prim_reg_info == NULL)
|
||||
|
@ -390,7 +390,7 @@ GDBRemoteRegisterContext::WriteRegisterBytes (const lldb_private::RegisterInfo *
|
|||
const uint32_t reg = reg_info->value_regs[idx];
|
||||
if (reg == LLDB_INVALID_REGNUM)
|
||||
break;
|
||||
// We have a valid primordial regsiter as our constituent.
|
||||
// We have a valid primordial register as our constituent.
|
||||
// Grab the corresponding register info.
|
||||
const RegisterInfo *value_reg_info = GetRegisterInfoAtIndex(reg);
|
||||
if (value_reg_info == NULL)
|
||||
|
@ -653,7 +653,7 @@ GDBRemoteRegisterContext::WriteAllRegisterValues (const lldb::DataBufferSP &data
|
|||
response.GetStringRef().assign (G_packet, G_packet_len);
|
||||
response.SetFilePos(1); // Skip the leading 'G'
|
||||
|
||||
// G_packet_len is hex-ascii characters plus prefix 'G' plus suffix therad specifier.
|
||||
// G_packet_len is hex-ascii characters plus prefix 'G' plus suffix thread specifier.
|
||||
// This means buffer will be a little more than 2x larger than necessary but we resize
|
||||
// it down once we've extracted all hex ascii chars from the packet.
|
||||
DataBufferHeap buffer (G_packet_len, 0);
|
||||
|
@ -701,7 +701,7 @@ GDBRemoteRegisterContext::WriteAllRegisterValues (const lldb::DataBufferSP &data
|
|||
}
|
||||
else if (static_cast<size_t>(size_not_including_slice_registers) == restore_data.GetByteSize())
|
||||
{
|
||||
// The size of the packet is the same as concenating all of the registers sequentially,
|
||||
// The size of the packet is the same as concatenating all of the registers sequentially,
|
||||
// skipping the slice registers
|
||||
use_byte_offset_into_buffer = true;
|
||||
}
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
// (breakpoints, watchpoints, crashes, and signal generation/delivery) happen
|
||||
// from multiple threads. The test expects the debugger to set a breakpoint on
|
||||
// the main thread (before any worker threads are spawned) and modify variables
|
||||
// which control the number of therads that are spawned for each action.
|
||||
// which control the number of threads that are spawned for each action.
|
||||
|
||||
#include <atomic>
|
||||
#include <vector>
|
||||
|
|
|
@ -1182,7 +1182,7 @@
|
|||
callback for all logging in libdebugnub.dylib and any code that
|
||||
loads it.
|
||||
(DNBLogToASL): Removed function as it is deprecated in favor of
|
||||
using DNBLogSetLogCallback to regsiter a callback function that
|
||||
using DNBLogSetLogCallback to register a callback function that
|
||||
implements the logging.
|
||||
(DNBLogToFile): Ditto.
|
||||
(DNBLogCloseLogFile): Ditto.
|
||||
|
|
|
@ -41,7 +41,7 @@ public:
|
|||
uint32_t WaitForResetAck (const uint32_t mask, const struct timespec *timeout_abstime = NULL) const;
|
||||
protected:
|
||||
//----------------------------------------------------------------------
|
||||
// pthread condition and mutex variable to controll access and allow
|
||||
// pthread condition and mutex variable to control access and allow
|
||||
// blocking between the main thread and the spotlight index thread.
|
||||
//----------------------------------------------------------------------
|
||||
mutable PThreadMutex m_mutex;
|
||||
|
@ -51,7 +51,7 @@ protected:
|
|||
uint32_t m_validBits;
|
||||
uint32_t m_reset_ack_mask;
|
||||
private:
|
||||
PThreadEvent(const PThreadEvent&); // Outlaw copy contructor
|
||||
PThreadEvent(const PThreadEvent&); // Outlaw copy constructor
|
||||
PThreadEvent& operator=(const PThreadEvent& rhs);
|
||||
|
||||
};
|
||||
|
|
|
@ -197,7 +197,7 @@ RNBRemote::CreatePacketTable ()
|
|||
t.push_back (Packet (allocate_memory, &RNBRemote::HandlePacket_AllocateMemory, NULL, "_M", "Allocate memory in the inferior process."));
|
||||
t.push_back (Packet (deallocate_memory, &RNBRemote::HandlePacket_DeallocateMemory, NULL, "_m", "Deallocate memory in the inferior process."));
|
||||
t.push_back (Packet (save_register_state, &RNBRemote::HandlePacket_SaveRegisterState, NULL, "QSaveRegisterState", "Save the register state for the current thread and return a decimal save ID."));
|
||||
t.push_back (Packet (restore_register_state, &RNBRemote::HandlePacket_RestoreRegisterState, NULL, "QRestoreRegisterState:", "Restore the register state given a save ID previosly returned from a call to QSaveRegisterState."));
|
||||
t.push_back (Packet (restore_register_state, &RNBRemote::HandlePacket_RestoreRegisterState, NULL, "QRestoreRegisterState:", "Restore the register state given a save ID previously returned from a call to QSaveRegisterState."));
|
||||
t.push_back (Packet (memory_region_info, &RNBRemote::HandlePacket_MemoryRegionInfo, NULL, "qMemoryRegionInfo", "Return size and attributes of a memory region that contains the given address"));
|
||||
t.push_back (Packet (get_profile_data, &RNBRemote::HandlePacket_GetProfileData, NULL, "qGetProfileData", "Return profiling data of the current target."));
|
||||
t.push_back (Packet (set_enable_profiling, &RNBRemote::HandlePacket_SetEnableAsyncProfiling, NULL, "QSetEnableAsyncProfiling", "Enable or disable the profiling of current target."));
|
||||
|
@ -985,7 +985,7 @@ RNBRemote::InitializeRegisters (bool force)
|
|||
}
|
||||
}
|
||||
|
||||
// Now we must find any regsiters whose values are in other registers and fix up
|
||||
// Now we must find any registers whose values are in other registers and fix up
|
||||
// the offsets since we removed all gaps...
|
||||
for (auto ®_entry: g_dynamic_register_map)
|
||||
{
|
||||
|
@ -2929,7 +2929,7 @@ RNBRemote::HandlePacket_AllocateMemory (const char *p)
|
|||
}
|
||||
|
||||
// FORMAT: _mXXXXXX
|
||||
// XXXXXX: address that was previosly allocated
|
||||
// XXXXXX: address that was previously allocated
|
||||
//
|
||||
// RESPONSE: XXXXXX
|
||||
// OK: address was deallocated
|
||||
|
|
|
@ -249,7 +249,7 @@ public:
|
|||
RNBSocket& Comm() { return m_comm; }
|
||||
|
||||
private:
|
||||
// Outlaw some contructors
|
||||
// Outlaw some constructors
|
||||
RNBRemote (const RNBRemote &);
|
||||
|
||||
protected:
|
||||
|
|
|
@ -85,7 +85,7 @@ void CMICmdArgSet::Destroy( void )
|
|||
|
||||
//++ ------------------------------------------------------------------------------------
|
||||
// Details: Retrieve the state flag indicating that the command set up ready to parse
|
||||
// command arguments or options found that one or more arguemnts was indeed
|
||||
// command arguments or options found that one or more arguments was indeed
|
||||
// present but not handled. This is given as a warning in the MI log file.
|
||||
// Type: Method.
|
||||
// Args: None.
|
||||
|
@ -98,7 +98,7 @@ bool CMICmdArgSet::IsArgsPresentButNotHandledByCmd( void ) const
|
|||
}
|
||||
|
||||
//++ ------------------------------------------------------------------------------------
|
||||
// Details: Add the the list of command's arguments to parse and validate another one.
|
||||
// Details: Add the list of command's arguments to parse and validate another one.
|
||||
// Type: Method.
|
||||
// Args: vArg - (R) A command argument object.
|
||||
// Return: MIstatus::success - Functional succeeded.
|
||||
|
@ -161,7 +161,7 @@ const CMICmdArgSet::SetCmdArgs_t & CMICmdArgSet::GetArgsNotHandledByCmd( void )
|
|||
//++ ------------------------------------------------------------------------------------
|
||||
// Details: Given a set of command argument objects parse the context option string to
|
||||
// find those argument and retrieve their value. If the function fails call
|
||||
// GetArgsThatAreMissing() to see which commands that were manadatory were
|
||||
// GetArgsThatAreMissing() to see which commands that were mandatory were
|
||||
// missing or failed to parse.
|
||||
// Type: Method.
|
||||
// Args: vStrMiCmd - (R) Command's name.
|
||||
|
|
|
@ -50,7 +50,7 @@ CMICmdArgValFile::CMICmdArgValFile( const CMIUtilString & vrArgName, const bool
|
|||
|
||||
//++ ------------------------------------------------------------------------------------
|
||||
// Details: CMICmdArgValFile destructor.
|
||||
// Type: Overidden.
|
||||
// Type: Overridden.
|
||||
// Args: None.
|
||||
// Return: None.
|
||||
// Throws: None.
|
||||
|
|
|
@ -75,7 +75,7 @@ CMICmdArgValListBase::CMICmdArgValListBase( const CMIUtilString & vrArgName, con
|
|||
|
||||
//++ ------------------------------------------------------------------------------------
|
||||
// Details: CMICmdArgValListBase destructor.
|
||||
// Type: Overidden.
|
||||
// Type: Overridden.
|
||||
// Args: None.
|
||||
// Return: None.
|
||||
// Throws: None.
|
||||
|
|
|
@ -57,7 +57,7 @@ CMICmdArgValListOfN::CMICmdArgValListOfN( const CMIUtilString & vrArgName, const
|
|||
|
||||
//++ ------------------------------------------------------------------------------------
|
||||
// Details: CMICmdArgValListOfN destructor.
|
||||
// Type: Overidden.
|
||||
// Type: Overridden.
|
||||
// Args: None.
|
||||
// Return: None.
|
||||
// Throws: None.
|
||||
|
|
|
@ -52,7 +52,7 @@ CMICmdArgValNumber::CMICmdArgValNumber( const CMIUtilString & vrArgName, const b
|
|||
|
||||
//++ ------------------------------------------------------------------------------------
|
||||
// Details: CMICmdArgValNumber destructor.
|
||||
// Type: Overidden.
|
||||
// Type: Overridden.
|
||||
// Args: None.
|
||||
// Return: None.
|
||||
// Throws: None.
|
||||
|
|
|
@ -72,7 +72,7 @@ CMICmdArgValOptionLong::CMICmdArgValOptionLong( const CMIUtilString & vrArgName,
|
|||
|
||||
//++ ------------------------------------------------------------------------------------
|
||||
// Details: CMICmdArgValOptionLong destructor.
|
||||
// Type: Overidden.
|
||||
// Type: Overridden.
|
||||
// Args: None.
|
||||
// Return: None.
|
||||
// Throws: None.
|
||||
|
@ -107,7 +107,7 @@ void CMICmdArgValOptionLong::Destroy( void )
|
|||
|
||||
//++ ------------------------------------------------------------------------------------
|
||||
// Details: Parse the command's argument options string and try to extract the long
|
||||
// arguemnt *this argument type is looking for.
|
||||
// argument *this argument type is looking for.
|
||||
// Type: Overridden.
|
||||
// Args: vwArgContext - (RW) The command's argument options string.
|
||||
// Return: MIstatus::success - Functional succeeded.
|
||||
|
|
|
@ -66,7 +66,7 @@ CMICmdArgValOptionShort::CMICmdArgValOptionShort( const CMIUtilString & vrArgNam
|
|||
|
||||
//++ ------------------------------------------------------------------------------------
|
||||
// Details: CMICmdArgValOptionShort destructor.
|
||||
// Type: Overidden.
|
||||
// Type: Overridden.
|
||||
// Args: None.
|
||||
// Return: None.
|
||||
// Throws: None.
|
||||
|
|
|
@ -74,7 +74,7 @@ CMICmdArgValString::CMICmdArgValString( const CMIUtilString & vrArgName, const b
|
|||
|
||||
//++ ------------------------------------------------------------------------------------
|
||||
// Details: CMICmdArgValString destructor.
|
||||
// Type: Overidden.
|
||||
// Type: Overridden.
|
||||
// Args: None.
|
||||
// Return: None.
|
||||
// Throws: None.
|
||||
|
|
|
@ -52,7 +52,7 @@ CMICmdArgValThreadGrp::CMICmdArgValThreadGrp( const CMIUtilString & vrArgName, c
|
|||
|
||||
//++ ------------------------------------------------------------------------------------
|
||||
// Details: CMICmdArgValThreadGrp destructor.
|
||||
// Type: Overidden.
|
||||
// Type: Overridden.
|
||||
// Args: None.
|
||||
// Return: None.
|
||||
// Throws: None.
|
||||
|
@ -169,4 +169,4 @@ bool CMICmdArgValThreadGrp::ExtractNumber( const CMIUtilString & vrTxt )
|
|||
MIuint CMICmdArgValThreadGrp::GetNumber( void ) const
|
||||
{
|
||||
return m_nThreadGrp;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -245,7 +245,7 @@ CMICmnResources::CMICmnResources( void )
|
|||
|
||||
//++ ------------------------------------------------------------------------------------
|
||||
// Details: CMICmnResources destructor.
|
||||
// Type: Overidden.
|
||||
// Type: Overridden.
|
||||
// Args: None.
|
||||
// Return: None.
|
||||
// Throws: None.
|
||||
|
|
|
@ -187,7 +187,7 @@ bool CMICmnStreamStdin::SetPrompt( const CMIUtilString & vNewPrompt )
|
|||
}
|
||||
|
||||
//++ ------------------------------------------------------------------------------------
|
||||
// Details: Retreive the command line prompt text currently being used.
|
||||
// Details: Retrieve the command line prompt text currently being used.
|
||||
// Type: Method.
|
||||
// Args: None.
|
||||
// Return: const CMIUtilString & - Functional failed.
|
||||
|
@ -201,7 +201,7 @@ const CMIUtilString & CMICmnStreamStdin::GetPrompt( void ) const
|
|||
//++ ------------------------------------------------------------------------------------
|
||||
// Details: Wait on input from stream Stdin. On each line of input received it is
|
||||
// validated and providing there are no errors on the stream or the input
|
||||
// buffer is not exceeded the data is passed to the vistor.
|
||||
// buffer is not exceeded the data is passed to the visitor.
|
||||
// Type: Method.
|
||||
// Args: vrVisitor - (W) A client deriver callback.
|
||||
// Return: MIstatus::success - Functional succeeded.
|
||||
|
@ -216,7 +216,7 @@ bool CMICmnStreamStdin::SetVisitor( IStreamStdin & vrVisitor )
|
|||
|
||||
//++ ------------------------------------------------------------------------------------
|
||||
// Details: Set whether to display optional command line prompt. The prompt is output to
|
||||
// stdout. Disable it when this may interfer with the client reading stdout as
|
||||
// stdout. Disable it when this may interfere with the client reading stdout as
|
||||
// input and it tries to interpret the prompt text to.
|
||||
// Type: Method.
|
||||
// Args: vbYes - (R) True = Yes prompt is shown/output to the user (stdout), false = no prompt.
|
||||
|
@ -231,7 +231,7 @@ void CMICmnStreamStdin::SetEnablePrompt( const bool vbYes )
|
|||
|
||||
//++ ------------------------------------------------------------------------------------
|
||||
// Details: Get whether to display optional command line prompt. The prompt is output to
|
||||
// stdout. Disable it when this may interfer with the client reading stdout as
|
||||
// stdout. Disable it when this may interfere with the client reading stdout as
|
||||
// input and it tries to interpret the prompt text to.
|
||||
// Type: Method.
|
||||
// Args: None.
|
||||
|
@ -366,7 +366,7 @@ void CMICmnStreamStdin::SetCtrlCHit( void )
|
|||
|
||||
//++ ------------------------------------------------------------------------------------
|
||||
// Details: The main worker method for this thread.
|
||||
// Type: Overidden.
|
||||
// Type: Overridden.
|
||||
// Args: vrbIsAlive = (W) True = *this thread is working, false = thread has exited.
|
||||
// Return: MIstatus::success - Functional succeeded.
|
||||
// MIstatus::failure - Functional failed.
|
||||
|
|
|
@ -747,7 +747,7 @@ FILE * CMIDriver::GetStdin( void ) const
|
|||
//++ ------------------------------------------------------------------------------------
|
||||
// Details: *this driver provides a file stream to other pass through assigned drivers
|
||||
// so they know what to write to.
|
||||
// Type: Overidden.
|
||||
// Type: Overridden.
|
||||
// Args: None.
|
||||
// Return: FILE * - Pointer to stream.
|
||||
// Throws: None.
|
||||
|
@ -764,7 +764,7 @@ FILE * CMIDriver::GetStdout( void ) const
|
|||
//++ ------------------------------------------------------------------------------------
|
||||
// Details: *this driver provides a error file stream to other pass through assigned drivers
|
||||
// so they know what to write to.
|
||||
// Type: Overidden.
|
||||
// Type: Overridden.
|
||||
// Args: None.
|
||||
// Return: FILE * - Pointer to stream.
|
||||
// Throws: None.
|
||||
|
@ -775,7 +775,7 @@ FILE * CMIDriver::GetStderr( void ) const
|
|||
// available before *this driver has been initialized! Flaw?
|
||||
|
||||
// This very likely to change later to a stream that the pass thru driver
|
||||
// will write to and *this driver reads from to pass on the the CMICmnLog object
|
||||
// will write to and *this driver reads from to pass on the CMICmnLog object
|
||||
return stderr;
|
||||
}
|
||||
|
||||
|
@ -932,7 +932,7 @@ bool CMIDriver::ExecuteCommand( const SMICmdData & vCmdData )
|
|||
|
||||
//++ ------------------------------------------------------------------------------------
|
||||
// Details: Set the MI Driver's exit application flag. The application checks this flag
|
||||
// after every stdin line is read so the exit may not be instantious.
|
||||
// after every stdin line is read so the exit may not be instantaneous.
|
||||
// If vbForceExit is false the MI Driver queries its state and determines if is
|
||||
// should exit or continue operating depending on that running state.
|
||||
// This is related to the running state of the MI driver.
|
||||
|
@ -1114,4 +1114,4 @@ bool CMIDriver::InitClientIDEEclipse( void ) const
|
|||
std::cout << "(gdb)" << std::endl;
|
||||
|
||||
return MIstatus::success;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -91,7 +91,7 @@
|
|||
<tr valign=top><td><b>module.file.fullpath</b></td><td>The basename of the current module (shared library or executable)</td></tr>
|
||||
<tr valign=top><td><b>process.file.basename</b></td><td>The basename of the file for the process</td></tr>
|
||||
<tr valign=top><td><b>process.file.fullpath</b></td><td>The fullname of the file for the process</td></tr>
|
||||
<tr valign=top><td><b>process.id</b></td><td>The process ID native the the system on which the inferior runs.</td></tr>
|
||||
<tr valign=top><td><b>process.id</b></td><td>The process ID native to the system on which the inferior runs.</td></tr>
|
||||
<tr valign=top><td><b>process.name</b></td><td>The name of the process at runtime</td></tr>
|
||||
<tr valign=top><td><b>thread.id</b></td><td>The thread identifier for the current thread</td></tr>
|
||||
<tr valign=top><td><b>thread.index</b></td><td>The unique one based thread index ID which is guaranteed to be unique as threads come and go.</td></tr>
|
||||
|
|
|
@ -56,7 +56,7 @@
|
|||
language features and runtimes in expressions without having to reimplement <b>any</b>
|
||||
of this functionality. It also leverages the compiler to take care of all ABI
|
||||
details when making functions calls for expressions, when disassembling
|
||||
instructions and extracting instruciton details, and much more.
|
||||
instructions and extracting instruction details, and much more.
|
||||
<p>The major benefits include:</p>
|
||||
<ul>
|
||||
<li>Up to date language support for C, C++, Objective C</li>
|
||||
|
|
|
@ -616,7 +616,7 @@
|
|||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="header" colspan="2">Display a the variable "argc" and "argv" every time you stop.</td></tr>
|
||||
<tr><td class="header" colspan="2">Display the variables "argc" and "argv" every time you stop.</td></tr>
|
||||
<tr>
|
||||
<td class="content">
|
||||
<b>(gdb)</b> display argc<br>
|
||||
|
@ -630,7 +630,7 @@
|
|||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="header" colspan="2">Display a the variable "argc" and "argv" only when you stop in the function named <b>main</b>.</td></tr>
|
||||
<tr><td class="header" colspan="2">Display the variables "argc" and "argv" only when you stop in the function named <b>main</b>.</td></tr>
|
||||
<tr>
|
||||
<td class="content">
|
||||
</td>
|
||||
|
@ -1157,7 +1157,7 @@
|
|||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td class="header" colspan="2">Find full souce line information.</td></tr>
|
||||
<tr><td class="header" colspan="2">Find full source line information.</td></tr>
|
||||
<tr>
|
||||
<td class="content">
|
||||
<b>(gdb)</b> info line 0x1ec4<br>
|
||||
|
|
|
@ -322,7 +322,7 @@ Enter your Python command(s). Type 'DONE' to end.
|
|||
<p>Python functions can be used to create new LLDB command interpreter commands, which will work
|
||||
like all the natively defined lldb commands. This provides a very flexible and easy way to extend LLDB to meet your
|
||||
debugging requirements. </p>
|
||||
<p>To write a python function that implements a new LDB command define the function to take four arguments as follows:</p>
|
||||
<p>To write a python function that implements a new LLDB command define the function to take four arguments as follows:</p>
|
||||
|
||||
<code><pre><tt>def command_function(<b>debugger</b>, <b>command</b>, <b>result</b>, <b>internal_dict</b>):
|
||||
<font color=green># Your code goes here</font>
|
||||
|
@ -414,7 +414,7 @@ Enter your Python command(s). Type 'DONE' to end.
|
|||
<lldb> module at the top of the python <b>ls.py</b> module. This test
|
||||
must be in code that isn't contained inside of any function or class,
|
||||
just like the standard test for <b>__main__</b> like all python modules
|
||||
usally do. Sample code would look like:
|
||||
usually do. Sample code would look like:
|
||||
|
||||
<code><pre><tt>if __name__ == '__main__':
|
||||
<font color=green># Create a new debugger instance in your module if your module
|
||||
|
|
|
@ -520,7 +520,7 @@ Process 696 stopped
|
|||
|
||||
<p>After setting our breakpoints, adding our breakpoint commands and continuing,
|
||||
we run for a little bit and then hit one of our breakpoints, printing out the
|
||||
error message from the breakpoint command. Apparently at this point the the
|
||||
error message from the breakpoint command. Apparently at this point in the
|
||||
tree, our search algorithm decided to go right, but our path says the node we
|
||||
want is to the left. Examining the word at the node where we stopped, and our
|
||||
search word, we see:</p>
|
||||
|
|
|
@ -77,7 +77,7 @@
|
|||
foo.c) got more and more complex and bizarre, and especially in C++
|
||||
there are times where there's really no way to specify the function
|
||||
you want to break on. The lldb commands are more verbose but also more precise
|
||||
and allow for intellegent auto completion.
|
||||
and allow for intelligent auto completion.
|
||||
|
||||
<p>To set the same file and line breakpoint in LLDB you can enter either of:</p>
|
||||
|
||||
|
|
Loading…
Reference in New Issue