[lldb-dev] LLDB sends continue right after connection (gdb-remote)

Malea, Daniel daniel.malea at intel.com
Tue Jan 22 07:55:14 PST 2013


I'm not too familiar with the GDB remote plugin, but it looks like ProcessGDBRemote::Resume() is being called, which is somewhat surprising because at first glance it doesn't look like anything in UpdateThreadList() should be calling that.

If you can, I'd recommend making a debug build of lldb and starting it with another debugger (gdb) attached and set a breakpoint in ProcessGDBRemote::DoResume() to see who calls it and why.

If you find out more information, feel free to log a defect at http://llvm.org/bugs/enter_bug.cgi?product=lldb


Cheers,
Dan

From: lldb-dev-bounces at cs.uiuc.edu [mailto:lldb-dev-bounces at cs.uiuc.edu] On Behalf Of Benjamin Kemper
Sent: Tuesday, January 22, 2013 9:56 AM
To: lldb-dev at cs.uiuc.edu
Subject: [lldb-dev] LLDB sends continue right after connection (gdb-remote)

Hi,

I've implemented a debugger backend that implements the gdb remote protocol, and I've noticed that while communication seems OK, right after the connection from LLDB to my implementation the process resumes automatically.

I'm guessing that this is not the expected behaviour, but when looking at the logs I did see LLDB sending the "$vCont" packet without any user interaction.

I used the following command to connect:
process connect -p gdb-remote connect://localhost:52168

And this is an excerpt from the logs:
ProcessGDBRemote::UpdateThreadList (pid = 1799)
0x7fe2aa2268b0: ThreadGDBRemote::ThreadGDBRemote (pid = 1799, tid = 0x0707)
<  22> send packet: $qThreadStopInfo707#99
size_t GDBRemoteCommunication::WaitForPacketWithTimeoutMicroSecondsNoLock(StringExtractorGDBRemote &, uint32_t): Read (buffer, (sizeof(buffer), timeout_usec = 0xf4240, status = success, error = (null)) => bytes_read = 1
<   1> read packet: +
size_t GDBRemoteCommunication::WaitForPacketWithTimeoutMicroSecondsNoLock(StringExtractorGDBRemote &, uint32_t): Read (buffer, (sizeof(buffer), timeout_usec = 0xf4240, status = success, error = (null)) => bytes_read = 4
<   4> read packet: $#00
<   1> send packet: +
error: failed to get response for 'qThreadStopInfo707'
ProcessGDBRemote::Resume()
ProcessGDBRemote::AsyncThread (arg = 0x7fe2ab00d000, pid = 1799) Got an event of type: 1...
ProcessGDBRemote::AsyncThread (arg = 0x7fe2ab00d000, pid = 1799) got eBroadcastBitAsyncContinue: vCont;c:0707
GDBRemoteCommunicationClient::SendContinuePacketAndWaitForResponse ()
GDBRemoteCommunicationClient::SendContinuePacketAndWaitForResponse () sending continue packet: vCont;c:0707
<  16> send packet: $vCont;c:0707#b0
size_t GDBRemoteCommunication::WaitForPacketWithTimeoutMicroSecondsNoLock(StringExtractorGDBRemote &, uint32_t): Read (buffer, (sizeof(buffer), timeout_usec = 0xf4240, status = success, error = (null)) => bytes_read = 1
<   1> read packet: +
GDBRemoteCommunicationClient::SendContinuePacketAndWaitForResponse () WaitForPacket(vCont;c:0707)
size_t GDBRemoteCommunication::WaitForPacketWithTimeoutMicroSecondsNoLock(StringExtractorGDBRemote &, uint32_t): Read (buffer, (sizeof(buffer), timeout_usec = 0xffffffff, status = success, error = (null)) => bytes_read = 7
<   7> read packet: $W00#b7
<   1> send packet: +
GDBRemoteCommunicationClient::SendContinuePacketAndWaitForResponse () got packet: W00
GDBRemoteCommunicationClient::SendContinuePacketAndWaitForResponse () => exited
ProcessGDBRemote::AsyncThread (arg = 0x7fe2ab00d000, pid = 1799) thread exiting...

Any ideas why this is happening?

Thanks,
Benjamin.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/lldb-dev/attachments/20130122/c84d8480/attachment.html>


More information about the lldb-dev mailing list