My stub sends an empty reply to qThreadStopInfo and it crashes lldb. (I 
understand it's an important command to implement, it's just that I decide if I 
want to implement them as lldb sends them.)

<  20> send packet: $qThreadStopInfo1#00
1   LLDB    0x0000000101579a43 
_ZN12lldb_private3Log21PrintfWithFlagsVarArgEjPKcP13__va_list_tag + 1475
2   LLDB    0x0000000101579c4e _ZN12lldb_private3Log6PrintfEPKcz + 366
3   LLDB    0x00000001017e6f39 
_ZN22GDBRemoteCommunication16SendPacketNoLockEPKcm + 649
4   LLDB    0x0000000101b02308 
_ZN28GDBRemoteCommunicationClient28SendPacketAndWaitForResponseEPKcmR24StringExtractorGDBRemoteb
 + 200
5   LLDB    0x0000000101b1374d 
_ZN28GDBRemoteCommunicationClient17GetThreadStopInfoEyR24StringExtractorGDBRemote
 + 221
6   LLDB    0x000000010181a368 _ZN15ThreadGDBRemote17CalculateStopInfoEv + 184
7   LLDB    0x0000000101aa8815 _ZN12lldb_private6Thread18GetPrivateStopInfoEv + 
997
8   LLDB    0x0000000101aa7cec _ZN12lldb_private6Thread11GetStopInfoEv + 892
9   LLDB    0x0000000101abdde0 
_ZN12lldb_private10ThreadList10ShouldStopEPNS_5EventE + 1296
10  LLDB    0x0000000101a2a492 
_ZN12lldb_private7Process20ShouldBroadcastEventEPNS_5EventE + 418
11  LLDB    0x0000000101a25b6d 
_ZN12lldb_private7Process18HandlePrivateEventERNSt3__110shared_ptrINS_5EventEEE 
+ 637
12  LLDB    0x0000000101a2931d 
_ZN12lldb_private7Process13ConnectRemoteEPNS_6StreamEPKc + 893
13  LLDB    0x000000010148b64c 
_ZN27CommandObjectProcessConnect9DoExecuteERN12lldb_private4ArgsERNS0_19CommandReturnObjectE
 + 1788
14  LLDB    0x000000010175c4db 
_ZN12lldb_private19CommandObjectParsed7ExecuteEPKcRNS_19CommandReturnObjectE + 
715
15  LLDB    0x00000001017359a4 
_ZN12lldb_private18CommandInterpreter13HandleCommandEPKcNS_8LazyBoolERNS_19CommandReturnObjectEPNS_16ExecutionContextEbb
 + 21492
16  LLDB    0x00000001017637b8 
_ZN12lldb_private25CommandObjectRegexCommand9DoExecuteEPKcRNS_19CommandReturnObjectE
 + 2984
17  LLDB    0x000000010175c875 
_ZN12lldb_private16CommandObjectRaw7ExecuteEPKcRNS_19CommandReturnObjectE + 789
18  LLDB    0x00000001017359a4 
_ZN12lldb_private18CommandInterpreter13HandleCommandEPKcNS_8LazyBoolERNS_19CommandReturnObjectEPNS_16ExecutionContextEbb
 + 21492
19  LLDB    0x00000001000c8584 
_ZN4lldb20SBCommandInterpreter13HandleCommandEPKcRNS_21SBCommandReturnObjectEb 
+ 292
20  lldb    0x0000000100007b87 _ZN6Driver13HandleIOEventERKN4lldb7SBEventE + 183
21  lldb    0x000000010000af16 _ZN6Driver8MainLoopEv + 11062
22  lldb    0x000000010000b9d3 main + 467
23  lldb    0x0000000100000fd4 start + 52
24  ???     0x0000000000000001 0x0 + 1

Stack trace when the crash happens:

#0       lldb_private::Mutex::Locker::Lock(lldb_private::Mutex&) at 
/lldb/source/Host/common/Mutex.cpp:152
#1       lldb_private::Mutex::Locker::Locker(lldb_private::Mutex&) at 
/lldb/source/Host/common/Mutex.cpp:112
#2       lldb_private::Mutex::Locker::Locker(lldb_private::Mutex&) at 
/lldb/source/Host/common/Mutex.cpp:113
#3       lldb_private::Unwind::GetFrameInfoAtIndex(unsigned int, unsigned long 
long&, unsigned long long&) at /lldb/include/lldb/Target/Unwind.h:77
#4       lldb_private::StackFrameList::GetFramesUpTo(unsigned int) at 
/lldb/source/Target/StackFrameList.cpp:304
#5       lldb_private::StackFrameList::GetFrameAtIndex(unsigned int) at 
/lldb/source/Target/StackFrameList.cpp:521
#6       lldb_private::StackFrameList::SetDefaultFileAndLineToSelectedFrame() 
at /lldb/source/Target/StackFrameList.cpp:702
#7       lldb_private::Thread::SetDefaultFileAndLineToSelectedFrame() at 
/lldb/include/lldb/Target/Thread.h:415
#8       lldb_private::ThreadList::SetSelectedThreadByID(unsigned long long, 
bool) at /lldb/source/Target/ThreadList.cpp:691
#9       lldb::SBProcess::SetSelectedThread(lldb::SBThread const&) at 
/lldb/source/API/SBProcess.cpp:462
#10      Driver::UpdateSelectedThread() at /lldb/tools/driver/Driver.cpp:865
#11      Driver::HandleProcessEvent(lldb::SBEvent const&) at 
/lldb/tools/driver/Driver.cpp:1015
#12      Driver::MainLoop() at /lldb/tools/driver/Driver.cpp:1562
#13      main at /lldb/tools/driver/Driver.cpp:1727
#14      start ()

It happens because m_thread.GetUnwinder () at Target/StackFrameList.cpp:264 
(GetFramesUpTo) returns a null unwinder.

Entire communication attached, it should be pretty easy to reproduce from that.

Félix

<- QStartNoAckMode
-> OK
<- QThreadSuffixSupported
-> 
<- QListThreadsInStopReply
-> 
<- qHostInfo
-> cputype:18;cpusubtype:9;ostype:classic;vendor:fcloutier;endian:big;ptrsize:4
<- vCont?
-> vCont;c;s;t
<- qVAttachOrWaitSupported
-> 
<- qC
-> QC1
<- ?
-> S05
<- qRegisterInfo0
-> name:r0;bitsize:32;offset:0;encoding:uint;format:decimal;set=General Purpose 
Registers;
<- qRegisterInfo1
-> name:r1;bitsize:32;offset:4;encoding:uint;format:decimal;set=General Purpose 
Registers;alt-name:sp;generic=sp;
<- qRegisterInfo2
-> name:r2;bitsize:32;offset:8;encoding:uint;format:decimal;set=General Purpose 
Registers;alt-name:toc;
<- qRegisterInfo3
-> name:r3;bitsize:32;offset:12;encoding:uint;format:decimal;set=General 
Purpose Registers;generic:arg1;
<- qRegisterInfo4
-> name:r4;bitsize:32;offset:16;encoding:uint;format:decimal;set=General 
Purpose Registers;generic:arg2;
<- qRegisterInfo5
-> name:r5;bitsize:32;offset:20;encoding:uint;format:decimal;set=General 
Purpose Registers;generic:arg3;
<- qRegisterInfo6
-> name:r6;bitsize:32;offset:24;encoding:uint;format:decimal;set=General 
Purpose Registers;generic:arg4;
<- qRegisterInfo7
-> name:r7;bitsize:32;offset:28;encoding:uint;format:decimal;set=General 
Purpose Registers;generic:arg5;
<- qRegisterInfo8
-> name:r8;bitsize:32;offset:32;encoding:uint;format:decimal;set=General 
Purpose Registers;generic:arg6;
<- qRegisterInfo9
-> name:r9;bitsize:32;offset:36;encoding:uint;format:decimal;set=General 
Purpose Registers;generic:arg7;
<- qRegisterInfoa
-> name:r10;bitsize:32;offset:40;encoding:uint;format:decimal;set=General 
Purpose Registers;generic:arg8;
<- qRegisterInfob
-> name:r11;bitsize:32;offset:44;encoding:uint;format:decimal;set=General 
Purpose Registers;
<- qRegisterInfoc
-> name:r12;bitsize:32;offset:48;encoding:uint;format:decimal;set=General 
Purpose Registers;
<- qRegisterInfod
-> name:r13;bitsize:32;offset:52;encoding:uint;format:decimal;set=General 
Purpose Registers;
<- qRegisterInfoe
-> name:r14;bitsize:32;offset:56;encoding:uint;format:decimal;set=General 
Purpose Registers;
<- qRegisterInfof
-> name:r15;bitsize:32;offset:60;encoding:uint;format:decimal;set=General 
Purpose Registers;
<- qRegisterInfo10
-> name:r16;bitsize:32;offset:64;encoding:uint;format:decimal;set=General 
Purpose Registers;
<- qRegisterInfo11
-> name:r17;bitsize:32;offset:68;encoding:uint;format:decimal;set=General 
Purpose Registers;
<- qRegisterInfo12
-> name:r18;bitsize:32;offset:72;encoding:uint;format:decimal;set=General 
Purpose Registers;
<- qRegisterInfo13
-> name:r19;bitsize:32;offset:76;encoding:uint;format:decimal;set=General 
Purpose Registers;
<- qRegisterInfo14
-> name:r20;bitsize:32;offset:80;encoding:uint;format:decimal;set=General 
Purpose Registers;
<- qRegisterInfo15
-> name:r21;bitsize:32;offset:84;encoding:uint;format:decimal;set=General 
Purpose Registers;
<- qRegisterInfo16
-> name:r22;bitsize:32;offset:88;encoding:uint;format:decimal;set=General 
Purpose Registers;
<- qRegisterInfo17
-> name:r23;bitsize:32;offset:92;encoding:uint;format:decimal;set=General 
Purpose Registers;
<- qRegisterInfo18
-> name:r24;bitsize:32;offset:96;encoding:uint;format:decimal;set=General 
Purpose Registers;
<- qRegisterInfo19
-> name:r25;bitsize:32;offset:100;encoding:uint;format:decimal;set=General 
Purpose Registers;
<- qRegisterInfo1a
-> name:r26;bitsize:32;offset:104;encoding:uint;format:decimal;set=General 
Purpose Registers;
<- qRegisterInfo1b
-> name:r27;bitsize:32;offset:108;encoding:uint;format:decimal;set=General 
Purpose Registers;
<- qRegisterInfo1c
-> name:r28;bitsize:32;offset:112;encoding:uint;format:decimal;set=General 
Purpose Registers;
<- qRegisterInfo1d
-> name:r29;bitsize:32;offset:116;encoding:uint;format:decimal;set=General 
Purpose Registers;
<- qRegisterInfo1e
-> name:r30;bitsize:32;offset:120;encoding:uint;format:decimal;set=General 
Purpose Registers;
<- qRegisterInfo1f
-> name:r31;bitsize:32;offset:124;encoding:uint;format:decimal;set=General 
Purpose Registers;
<- qRegisterInfo20
-> 
name:fr0;bitsize:64;offset:128;encoding:ieee754;format:float;set=Floating-Point 
Registers;
<- qRegisterInfo21
-> 
name:fr1;bitsize:64;offset:136;encoding:ieee754;format:float;set=Floating-Point 
Registers;
<- qRegisterInfo22
-> 
name:fr2;bitsize:64;offset:144;encoding:ieee754;format:float;set=Floating-Point 
Registers;
<- qRegisterInfo23
-> 
name:fr3;bitsize:64;offset:152;encoding:ieee754;format:float;set=Floating-Point 
Registers;
<- qRegisterInfo24
-> 
name:fr4;bitsize:64;offset:160;encoding:ieee754;format:float;set=Floating-Point 
Registers;
<- qRegisterInfo25
-> 
name:fr5;bitsize:64;offset:168;encoding:ieee754;format:float;set=Floating-Point 
Registers;
<- qRegisterInfo26
-> 
name:fr6;bitsize:64;offset:176;encoding:ieee754;format:float;set=Floating-Point 
Registers;
<- qRegisterInfo27
-> 
name:fr7;bitsize:64;offset:184;encoding:ieee754;format:float;set=Floating-Point 
Registers;
<- qRegisterInfo28
-> 
name:fr8;bitsize:64;offset:192;encoding:ieee754;format:float;set=Floating-Point 
Registers;
<- qRegisterInfo29
-> 
name:fr9;bitsize:64;offset:200;encoding:ieee754;format:float;set=Floating-Point 
Registers;
<- qRegisterInfo2a
-> 
name:fr10;bitsize:64;offset:208;encoding:ieee754;format:float;set=Floating-Point
 Registers;
<- qRegisterInfo2b
-> 
name:fr11;bitsize:64;offset:216;encoding:ieee754;format:float;set=Floating-Point
 Registers;
<- qRegisterInfo2c
-> 
name:fr12;bitsize:64;offset:224;encoding:ieee754;format:float;set=Floating-Point
 Registers;
<- qRegisterInfo2d
-> 
name:fr13;bitsize:64;offset:232;encoding:ieee754;format:float;set=Floating-Point
 Registers;
<- qRegisterInfo2e
-> 
name:fr14;bitsize:64;offset:240;encoding:ieee754;format:float;set=Floating-Point
 Registers;
<- qRegisterInfo2f
-> 
name:fr15;bitsize:64;offset:248;encoding:ieee754;format:float;set=Floating-Point
 Registers;
<- qRegisterInfo30
-> 
name:fr16;bitsize:64;offset:256;encoding:ieee754;format:float;set=Floating-Point
 Registers;
<- qRegisterInfo31
-> 
name:fr17;bitsize:64;offset:264;encoding:ieee754;format:float;set=Floating-Point
 Registers;
<- qRegisterInfo32
-> 
name:fr18;bitsize:64;offset:272;encoding:ieee754;format:float;set=Floating-Point
 Registers;
<- qRegisterInfo33
-> 
name:fr19;bitsize:64;offset:280;encoding:ieee754;format:float;set=Floating-Point
 Registers;
<- qRegisterInfo34
-> 
name:fr20;bitsize:64;offset:288;encoding:ieee754;format:float;set=Floating-Point
 Registers;
<- qRegisterInfo35
-> 
name:fr21;bitsize:64;offset:296;encoding:ieee754;format:float;set=Floating-Point
 Registers;
<- qRegisterInfo36
-> 
name:fr22;bitsize:64;offset:304;encoding:ieee754;format:float;set=Floating-Point
 Registers;
<- qRegisterInfo37
-> 
name:fr23;bitsize:64;offset:312;encoding:ieee754;format:float;set=Floating-Point
 Registers;
<- qRegisterInfo38
-> 
name:fr24;bitsize:64;offset:320;encoding:ieee754;format:float;set=Floating-Point
 Registers;
<- qRegisterInfo39
-> 
name:fr25;bitsize:64;offset:328;encoding:ieee754;format:float;set=Floating-Point
 Registers;
<- qRegisterInfo3a
-> 
name:fr26;bitsize:64;offset:336;encoding:ieee754;format:float;set=Floating-Point
 Registers;
<- qRegisterInfo3b
-> 
name:fr27;bitsize:64;offset:344;encoding:ieee754;format:float;set=Floating-Point
 Registers;
<- qRegisterInfo3c
-> 
name:fr28;bitsize:64;offset:352;encoding:ieee754;format:float;set=Floating-Point
 Registers;
<- qRegisterInfo3d
-> 
name:fr29;bitsize:64;offset:360;encoding:ieee754;format:float;set=Floating-Point
 Registers;
<- qRegisterInfo3e
-> 
name:fr30;bitsize:64;offset:368;encoding:ieee754;format:float;set=Floating-Point
 Registers;
<- qRegisterInfo3f
-> 
name:fr31;bitsize:64;offset:376;encoding:ieee754;format:float;set=Floating-Point
 Registers;
<- qRegisterInfo40
-> name:cr0;bitsize:8;offset:384;encoding:uint;format:binary;set=Condition 
Registers;
<- qRegisterInfo41
-> name:cr1;bitsize:8;offset:385;encoding:uint;format:binary;set=Condition 
Registers;
<- qRegisterInfo42
-> name:cr2;bitsize:8;offset:386;encoding:uint;format:binary;set=Condition 
Registers;
<- qRegisterInfo43
-> name:cr3;bitsize:8;offset:387;encoding:uint;format:binary;set=Condition 
Registers;
<- qRegisterInfo44
-> name:cr4;bitsize:8;offset:388;encoding:uint;format:binary;set=Condition 
Registers;
<- qRegisterInfo45
-> name:cr5;bitsize:8;offset:389;encoding:uint;format:binary;set=Condition 
Registers;
<- qRegisterInfo46
-> name:cr6;bitsize:8;offset:390;encoding:uint;format:binary;set=Condition 
Registers;
<- qRegisterInfo47
-> name:cr7;bitsize:8;offset:391;encoding:uint;format:binary;set=Condition 
Registers;
<- qRegisterInfo48
-> name:xer;bitsize:32;offset:392;encoding:uint;format:binary;set=System 
Registers;
<- qRegisterInfo49
-> name:lr;bitsize:32;offset:396;encoding:uint;format:decimal;set=System 
Registers;generic:ra;
<- qRegisterInfo4a
-> name:ctr;bitsize:32;offset:400;encoding:uint;format:decimal;set=System 
Registers;
<- qRegisterInfo4b
-> E03
<- qProcessInfo
-> 
<- qShlibInfoAddr
-> 
<- mffff0000,200
-> 
eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
<- meeeeee00,200
-> 
eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
<- qfThreadInfo
-> m1
<- qsThreadInfo
-> l
<- qfThreadInfo
-> m1
<- qsThreadInfo
-> l
<- qThreadStopInfo1
-> 

Le 2013-08-12 à 11:42:52, Greg Clayton <[email protected]> a écrit :

> 
> On Aug 12, 2013, at 12:43 AM, Félix Cloutier <[email protected]> wrote:
> 
>> Well, it didn't take too long to run into issues:
>> 
>> <- qHostInfo
>> -> cputype:18;cpusubtype:9;ostype:unknown;vendor:fclout;endian:big;ptrsize:4
>> 
>> Assertion failed: (byte_order == m_host_arch.GetByteOrder()), function 
>> GetHostInfo, file 
>> /Users/felix/Projets/oss/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp,
>>  line 1235.
>> Abort trap: 6
> 
> This is now fixed with:
> 
> % svn commit 
> Sending        source/Core/ArchSpec.cpp
> Transmitting file data .
> Committed revision 188189.
> 
>> Is that something no one did because it's gonna be hard and deep-reaching or 
>> because nobody had a use case for it?
> 
> No one has down PowerPC debugging yet. 
> 
>> Also, pretty early (shortly after receiving no information for qProcessInfo 
>> and qShlibInfoAddr), lldb asks for the 512 bytes located at 0xffff0000. What 
>> is it trying to accomplish?
> 
> Not sure, enable packet logging with stack traces and you will see who is 
> trying to read this memory. Add the following line to your ~/.lldbinit file:
> 
> log enable --file /tmp/packets.txt --stack gdb-remote packets
> 
> 
>> 
>> That's where I stopped today. I might bug you guys again tomorrow :)
>> 
>> Félix
>> 
>> Le 2013-08-11 à 16:04:40, Félix Cloutier <[email protected]> a écrit :
>> 
>>> Got it, working on that.
>>> 
>>> Does QStartNoAckMode also disable checksums? In every example in the file, 
>>> checksums are #00 (and indeed lldb sends me packets with that same 
>>> checksum), but there's no mention of that in the document.
>>> 
>>> Félix
>>> 
>>> Le 2013-08-10 à 14:49:13, "Malea, Daniel" <[email protected]> a écrit :
>>> 
>>>> There is a text file in the doc/ directory that explains the LLDB 
>>>> enhancements to the GDB remote protocol.
>>>> 
>>>> Good luck,
>>>> Dan
>>>> 
>>>> On 2013-08-10, at 5:40 PM, "Félix Cloutier" <[email protected]> wrote:
>>>> 
>>>>> I am developing an emulator program and I would like to implement a 
>>>>> debugger stub (over TCP) to which I could connect using the remote 
>>>>> debugging features of lldb to assist me. GDB documents its communication 
>>>>> protocol, but I'm not a fan of how every concern happens at the same 
>>>>> level (especially reliability), so I was hoping the LLDB protocol could 
>>>>> be more modern.
>>>>> 
>>>>> Is there documentation for it? The commands seem to be declared in 
>>>>> tools/debugserver/source/RNBRemote.h, but I don't expect to implement all 
>>>>> of it and I'm not sure what's absolutely necessary and what's not so 
>>>>> necessary, and I'm not sure how packets are formed.
>>>>> 
>>>>> Is this documented anywhere, or is the best way to grab the source and 
>>>>> check for myself?
>>>>> 
>>>>> Félix
>>>>> _______________________________________________
>>>>> lldb-dev mailing list
>>>>> [email protected]
>>>>> http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev
>>> 
>> 
>> _______________________________________________
>> lldb-dev mailing list
>> [email protected]
>> http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev
> 

_______________________________________________
lldb-dev mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev

Reply via email to