From: dje@google.com (Doug Evans)
To: gdb-patches@sourceware.org
Subject: [RFC] When debugging infrun, print stop_pc in all possible cases.
Date: Thu, 26 Feb 2009 19:16:00 -0000 [thread overview]
Message-ID: <20090226180105.138461C78A7@localhost> (raw)
Hi.
I've been debugging a few issues and it's been really helpful to know
stop_pc in cases that aren't printed today.
This patch moves the debug printing of stop_pc up.
I'm not submitting it RFA because I'm not entirely happy with it.
Printing stop_pc has been helpful, I'd like to improve what's there today,
but it's not clear to me that this patch reasonably handles the cases
when one can't read pc before the big switch() on ecs->ws.kind.
Comments?
2009-02-26 Doug Evans <dje@google.com>
* infrun.c (handle_inferior_event): Move the debug printing of stop_pc,
and possible watchpoint address, to an earlier point so we print it
in all cases (where it's possible).
Index: infrun.c
===================================================================
RCS file: /cvs/src/src/gdb/infrun.c,v
retrieving revision 1.360
diff -u -p -r1.360 infrun.c
--- infrun.c 25 Feb 2009 02:14:22 -0000 1.360
+++ infrun.c 26 Feb 2009 17:52:28 -0000
@@ -2178,6 +2178,46 @@ handle_inferior_event (struct execution_
/* Dependent on the current PC value modified by adjust_pc_after_break. */
reinit_frame_cache ();
+ if (debug_infrun)
+ {
+ /* It's helpful to know the stop pc in all cases when we stop
+ (even if we're eventually going to resume).
+ To keep things simple we print it here before the big switch on
+ ecs->ws.kind. If we leave printing of stop_pc until later,
+ we will miss the cases where we "return;" early.
+ There are a few cases where we can't read pc though. */
+
+ switch (ecs->ws.kind)
+ {
+ case TARGET_WAITKIND_EXITED:
+ case TARGET_WAITKIND_SIGNALLED:
+ break;
+
+ default:
+ {
+ CORE_ADDR debug_stop_pc =
+ regcache_read_pc (get_thread_regcache (ecs->ptid));
+
+ fprintf_unfiltered (gdb_stdlog, "infrun: stop_pc = 0x%s\n",
+ paddr_nz (debug_stop_pc));
+
+ if (STOPPED_BY_WATCHPOINT (&ecs->ws))
+ {
+ CORE_ADDR addr;
+
+ if (target_stopped_data_address (¤t_target, &addr))
+ fprintf_unfiltered (gdb_stdlog,
+ "infrun: stopped by watchpoint, data address = 0x%s\n",
+ paddr_nz (addr));
+ else
+ fprintf_unfiltered (gdb_stdlog,
+ "infrun: stopped by watchpoint, no data address available\n");
+ }
+ break;
+ }
+ }
+ }
+
if (ecs->ws.kind != TARGET_WAITKIND_IGNORE)
{
breakpoint_retire_moribund ();
@@ -2507,25 +2547,6 @@ targets should add new threads to the th
stop_pc = regcache_read_pc (get_thread_regcache (ecs->ptid));
- if (debug_infrun)
- {
- fprintf_unfiltered (gdb_stdlog, "infrun: stop_pc = 0x%s\n",
- paddr_nz (stop_pc));
- if (STOPPED_BY_WATCHPOINT (&ecs->ws))
- {
- CORE_ADDR addr;
- fprintf_unfiltered (gdb_stdlog, "infrun: stopped by watchpoint\n");
-
- if (target_stopped_data_address (¤t_target, &addr))
- fprintf_unfiltered (gdb_stdlog,
- "infrun: stopped data address = 0x%s\n",
- paddr_nz (addr));
- else
- fprintf_unfiltered (gdb_stdlog,
- "infrun: (no data address available)\n");
- }
- }
-
if (stepping_past_singlestep_breakpoint)
{
gdb_assert (singlestep_breakpoints_inserted_p);
next reply other threads:[~2009-02-26 18:01 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-02-26 19:16 Doug Evans [this message]
2009-03-13 17:10 ` Doug Evans
2009-03-14 13:56 ` Pedro Alves
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=20090226180105.138461C78A7@localhost \
--to=dje@google.com \
--cc=gdb-patches@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