public inbox for gdb@sourceware.org
 help / color / mirror / Atom feed
From: Luis Machado <luis.machado@linaro.org>
To: Torsten@Robitzki.de
Cc: gdb@sourceware.org
Subject: Re: How to support interrupting a single step
Date: Fri, 27 Mar 2020 15:27:11 -0300	[thread overview]
Message-ID: <e57d715e-7dcb-1349-6c03-e01b7e94d0d0@linaro.org> (raw)
In-Reply-To: <D5595B6A-522E-4F1D-A115-84EF8047914B@Robitzki.de>

On 3/27/20 2:15 PM, Torsten@Robitzki.de wrote:
> Hi Luis,
> 
> I’m sorry, for the very late reply!
> 
>> Am 18.10.2019 um 15:08 schrieb Luis Machado <luis.machado@linaro.org>:
>>
>> The behavior of GDB when dealing with a tight/endless loop is known. See https://sourceware.org/bugzilla/show_bug.cgi?id=21221.
> 
> that Bug describes behavior, that a tide loops can’t be jumped over. In my case, I try to interrupt that scenario. So running the binary, till that loop. Interrupt execution and finding the program counter in that loop. Then single stepping over the loop (either ’s’ or ’n’). Then gdb does not break on the next execution of the loop and I’m unable to break into the debugger again. ctrl-c simply does nothing and I have to kill the debug server, so that the lost connection to the debug server gives me the prompt back.
> 
> Debugging the packages send and received, I find following:
> 
> ^C
> 
> 00d0030020276f0200b86a0200008c0021d0030020000000000000000000000000000000000000000000000000
> remote_pass_ctrlc called
> remote_interrupt called
> Sending packet: $s#73...Packet received: T05hwbreak;thread:0000DEAD;
> Sending packet: $g#67...Packet received: aba50200010000007017000001000000000000000000000000000000d00300200000000000000000000000000000000000000000d0030020276f0200ba6a020000980021d0030020000000000000000000000000000000000000000000000000
> Sending packet: $s#73...^Cremote_pass_ctrlc called
> remote_interrupt called
> Packet received: T05hwbreak;thread:0000DEAD;
> Sending packet: $g#67...Packet received: aba50200010000007017000001000000000000000000000000000000d00300200000000000000000000000000000000000000000d0030020276f0200bc6a020000000021d0030020000000000000000000000000000000000000000000000000
> Sending packet: $s#73...Packet received: T05hwbreak;thread:0000DEAD;
> Sending packet: $g#67...Packet received: aba50200010000007017000001000000000000000000000000000000d00300200000000000000000000000000000000000000000d0030020276f0200be6a020000000021d0030020000000000000000000000000000000000000000000000000
> 
> I would expect that once GDB recognizes, that I want to interrupt execution, it would stop sending ’s’ and ‚g‘ packages.
> 

GDB did recognize that you wanted to interrupt the remote and did send 
the right bytes to tell the remote to interrupt. I think what we're 
missing here is telling GDB your program stopped due to a SIGINT 
(GDB_SIGNAL_INT).

This is what i see when interrupting a remote on my local machine. 
Notice the signal sent is 02 and not 05 (SIGTRAP).


Sending packet: $vCont;s:p4e71.4e71;c:p4e71.-1#67...infrun: prepare_to_wait
remote_pass_ctrlc called
remote_interrupt called
Packet received: 
T0206:50e2ffffff7f0000;07:50e2ffffff7f0000;10:1046555555550000;thread:p4e71.4e71;core:1;
infrun: target_wait (-1.0.0, status) =
infrun:   20081.20081.0 [Thread 20081.20081],
infrun:   status->kind = stopped, signal = GDB_SIGNAL_INT
infrun: TARGET_WAITKIND_STOPPED
infrun: stop_pc = 0x555555554610
infrun: random signal (GDB_SIGNAL_INT)
infrun: stop_waiting
Sending packet: $z0,7ffff7a22c20,1#c3...Packet received: OK
Sending packet: $z0,7ffff7b18bc3,1#fc...Packet received: OK
Sending packet: $z0,7ffff7a22c93,1#cd...Packet received: OK
Sending packet: $qXfer:threads:read::0,fff#03...Packet received: 
l<threads>\n<thread id="p4e71.4e71" core="1" name="loop"/>\n</threads>\n

Program received signal SIGINT, Interrupt.

So it seems your debugging stub needs to reply with SIGINT (interrupted) 
as opposed to SIGTRAP (meaning your program has concluded a single-step).

Let me know if that fix what you're seeing.

  reply	other threads:[~2020-03-27 18:27 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-09-04 15:25 Torsten Robitzki
2019-10-18 13:08 ` Luis Machado
2020-03-27 17:15   ` Torsten
2020-03-27 18:27     ` Luis Machado [this message]
2020-03-30  9:15       ` Torsten
2020-03-30 10:56         ` Luis Machado

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=e57d715e-7dcb-1349-6c03-e01b7e94d0d0@linaro.org \
    --to=luis.machado@linaro.org \
    --cc=Torsten@Robitzki.de \
    --cc=gdb@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).