From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by sourceware.org (Postfix) with ESMTPS id A3A20385C6F4 for ; Tue, 4 Jul 2023 15:23:17 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org A3A20385C6F4 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=redhat.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=redhat.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1688484197; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=G/zIfOJp2nfWAScMrZXbicWhqLpFRvmqyc32HWVP4+A=; b=g8ISW2MY3yLMfduuW+qXI+ozT1RG+6R3S7o6qfQK0zjNe/JBmE5ODzpYhph7wc3mccRsvL odGCZZygmDS1YyVi3WQbpXSIaGdIxPqWxMDMC8DX6gREPv5zto0MDVLB4JwGT2+rsnhvYh V6+GBCVh9Jmf2+ukYXLwzIbMDByMqwM= Received: from mail-lf1-f70.google.com (mail-lf1-f70.google.com [209.85.167.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-581-2IOvFDX5MPW7I_Nbm7XQjw-1; Tue, 04 Jul 2023 11:23:16 -0400 X-MC-Unique: 2IOvFDX5MPW7I_Nbm7XQjw-1 Received: by mail-lf1-f70.google.com with SMTP id 2adb3069b0e04-4f3932e595dso5333997e87.1 for ; Tue, 04 Jul 2023 08:23:15 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1688484194; x=1691076194; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=G/zIfOJp2nfWAScMrZXbicWhqLpFRvmqyc32HWVP4+A=; b=Fs+6Y7L8sBi0I54n9au8LB17zkm6hQR4WWXF3bVDrKLKceBaFCyCX1UBeCoEbfZk4W giYzK2NRJSKUaMVsSelvnpbTsctG/UlS8ZTU/Etazy+77hwgYf2mBqw5qK/a7RmYk4Bp WsWvq3QKmsQC5Vs5dx+MIkwlWJtleuRH0cE0A4sVMAn84roiWErj8/d5qBSRPSDO/RnO AWblh9VsToEZauD/xJrDdgbubPA9F+0+9vJxpP6hbGwgYwxYeBF65DjiVlLKbMP80FsD mvN07T4Cukbkly8pO4jBNRIbIUDdPiRfAwQI3feRvRcyCrFUqfgwPm3uAA9P/I9ojyh9 +J1w== X-Gm-Message-State: ABy/qLakZa/O3Jf3U5FbY0Z1riw2fAJ8UJgY0BO2PE126Sh+qXN03Kan 9ZpvNH+IqoYq3qKp0n4xj+OhpPXJdyRvyx0W++yWvDraoPKv5IlYkVGkKTPfqENgJZkAE1zXUKJ GWfnSMHIBtt4/u5G620HP4CWCDll0ANJfCckU4GImxcN4bJhqI3HruL3rDQUjYrsPukfV/vnqw0 k71/OXng== X-Received: by 2002:a19:5e06:0:b0:4f8:5671:ed1 with SMTP id s6-20020a195e06000000b004f856710ed1mr8943165lfb.29.1688484194281; Tue, 04 Jul 2023 08:23:14 -0700 (PDT) X-Google-Smtp-Source: APBJJlEiYQBaytjhxmO/65le40xWnDnquQh7+FEi0ooqWVN/KR890UhTgxKMT2ByTNsFeLGfXHKZKA== X-Received: by 2002:a19:5e06:0:b0:4f8:5671:ed1 with SMTP id s6-20020a195e06000000b004f856710ed1mr8943149lfb.29.1688484193951; Tue, 04 Jul 2023 08:23:13 -0700 (PDT) Received: from localhost (2.72.115.87.dyn.plus.net. [87.115.72.2]) by smtp.gmail.com with ESMTPSA id n20-20020a7bcbd4000000b003fb739d27aesm22288341wmi.35.2023.07.04.08.23.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 04 Jul 2023 08:23:13 -0700 (PDT) From: Andrew Burgess To: gdb-patches@sourceware.org Cc: Andrew Burgess , tankut.baris.aktemur@intel.com Subject: [PATCHv2 8/8] gdb: additional debug output in infrun.c and linux-nat.c Date: Tue, 4 Jul 2023 16:22:58 +0100 Message-Id: X-Mailer: git-send-email 2.25.4 In-Reply-To: References: MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset="US-ASCII"; x-default=true X-Spam-Status: No, score=-11.9 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H4,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: While working on some of the recent patches relating to vfork handling I found this debug output very helpful, I'd like to propose adding this into GDB. With debug turned off there should be no user visible changes after this commit. --- gdb/infrun.c | 28 ++++++++++++++++++++++++---- gdb/linux-nat.c | 23 +++++++++++++++++++---- 2 files changed, 43 insertions(+), 8 deletions(-) diff --git a/gdb/infrun.c b/gdb/infrun.c index 2d2f7d67a0f..7efa0617526 100644 --- a/gdb/infrun.c +++ b/gdb/infrun.c @@ -435,6 +435,11 @@ show_follow_fork_mode_string (struct ui_file *file, int from_tty, static bool follow_fork_inferior (bool follow_child, bool detach_fork) { + INFRUN_SCOPED_DEBUG_ENTER_EXIT; + + infrun_debug_printf ("follow_child = %d, detach_fork = %d", + follow_child, detach_fork); + target_waitkind fork_kind = inferior_thread ()->pending_follow.kind (); gdb_assert (fork_kind == TARGET_WAITKIND_FORKED || fork_kind == TARGET_WAITKIND_VFORKED); @@ -543,6 +548,13 @@ holding the child stopped. Try \"set detach-on-fork\" or \ parent_inf->thread_waiting_for_vfork_done = detach_fork ? inferior_thread () : nullptr; parent_inf->pspace->breakpoints_not_allowed = detach_fork; + + infrun_debug_printf + ("parent_inf->thread_waiting_for_vfork_done == %s", + (parent_inf->thread_waiting_for_vfork_done == nullptr + ? "nullptr" + : (parent_inf->thread_waiting_for_vfork_done + ->ptid.to_string ().c_str ()))); } } else @@ -727,6 +739,8 @@ set_last_target_status_stopped (thread_info *tp) static bool follow_fork () { + INFRUN_SCOPED_DEBUG_ENTER_EXIT; + bool follow_child = (follow_fork_mode_string == follow_fork_mode_child); bool should_resume = true; @@ -996,6 +1010,8 @@ proceed_after_vfork_done (thread_info *thread) static void handle_vfork_child_exec_or_exit (int exec) { + INFRUN_SCOPED_DEBUG_ENTER_EXIT; + struct inferior *inf = current_inferior (); if (inf->vfork_parent) @@ -1127,6 +1143,8 @@ handle_vfork_child_exec_or_exit (int exec) static void handle_vfork_done (thread_info *event_thread) { + INFRUN_SCOPED_DEBUG_ENTER_EXIT; + /* We only care about this event if inferior::thread_waiting_for_vfork_done is set, that is if we are waiting for a vfork child not under our control (because we detached it) to exec or exit. @@ -1142,8 +1160,6 @@ handle_vfork_done (thread_info *event_thread) return; } - INFRUN_SCOPED_DEBUG_ENTER_EXIT; - /* We stopped all threads (other than the vforking thread) of the inferior in follow_fork and kept them stopped until now. It should therefore not be possible for another thread to have reported a vfork during that window. @@ -3407,6 +3423,8 @@ proceed (CORE_ADDR addr, enum gdb_signal siggnal) thread_info *cur_thr = inferior_thread (); + infrun_debug_printf ("cur_thr = %s", cur_thr->ptid.to_string ().c_str ()); + /* Fill in with reasonable starting values. */ init_thread_stepping_state (cur_thr); @@ -3463,8 +3481,10 @@ proceed (CORE_ADDR addr, enum gdb_signal siggnal) if (!cur_thr->control.in_infcall) set_running (resume_target, resume_ptid, true); - infrun_debug_printf ("addr=%s, signal=%s", paddress (gdbarch, addr), - gdb_signal_to_symbol_string (siggnal)); + infrun_debug_printf ("addr=%s, signal=%s, resume_ptid=%s", + paddress (gdbarch, addr), + gdb_signal_to_symbol_string (siggnal), + resume_ptid.to_string ().c_str ()); annotate_starting (); diff --git a/gdb/linux-nat.c b/gdb/linux-nat.c index 7e121b7ab41..87152621dd6 100644 --- a/gdb/linux-nat.c +++ b/gdb/linux-nat.c @@ -1293,6 +1293,11 @@ get_detach_signal (struct lwp_info *lp) static void detach_one_lwp (struct lwp_info *lp, int *signo_p) { + LINUX_NAT_SCOPED_DEBUG_ENTER_EXIT; + + linux_nat_debug_printf ("lwp %s (stopped = %d)", + lp->ptid.to_string ().c_str (), lp->stopped); + int lwpid = lp->ptid.lwp (); int signo; @@ -1363,6 +1368,10 @@ detach_one_lwp (struct lwp_info *lp, int *signo_p) else signo = *signo_p; + linux_nat_debug_printf ("preparing to resume lwp %s (stopped = %d)", + lp->ptid.to_string ().c_str (), + lp->stopped); + /* Preparing to resume may try to write registers, and fail if the lwp is zombie. If that happens, ignore the error. We'll handle it below, when detach fails with ESRCH. */ @@ -1395,6 +1404,8 @@ detach_callback (struct lwp_info *lp) void linux_nat_target::detach (inferior *inf, int from_tty) { + LINUX_NAT_SCOPED_DEBUG_ENTER_EXIT; + struct lwp_info *main_lwp; int pid = inf->pid; @@ -3122,13 +3133,13 @@ static ptid_t linux_nat_wait_1 (ptid_t ptid, struct target_waitstatus *ourstatus, target_wait_flags target_options) { + LINUX_NAT_SCOPED_DEBUG_ENTER_EXIT; + sigset_t prev_mask; enum resume_kind last_resume_kind; struct lwp_info *lp; int status; - linux_nat_debug_printf ("enter"); - /* The first time we get here after starting a new inferior, we may not have added it to the LWP list yet - this is the earliest moment at which we know its PID. */ @@ -3228,7 +3239,7 @@ linux_nat_wait_1 (ptid_t ptid, struct target_waitstatus *ourstatus, if (target_options & TARGET_WNOHANG) { - linux_nat_debug_printf ("exit (ignore)"); + linux_nat_debug_printf ("no interesting events found"); ourstatus->set_ignore (); restore_child_signals_mask (&prev_mask); @@ -3314,7 +3325,7 @@ linux_nat_wait_1 (ptid_t ptid, struct target_waitstatus *ourstatus, else *ourstatus = host_status_to_waitstatus (status); - linux_nat_debug_printf ("exit"); + linux_nat_debug_printf ("event found"); restore_child_signals_mask (&prev_mask); @@ -3410,6 +3421,8 @@ ptid_t linux_nat_target::wait (ptid_t ptid, struct target_waitstatus *ourstatus, target_wait_flags target_options) { + LINUX_NAT_SCOPED_DEBUG_ENTER_EXIT; + ptid_t event_ptid; linux_nat_debug_printf ("[%s], [%s]", ptid.to_string ().c_str (), @@ -3589,6 +3602,8 @@ linux_nat_target::kill () void linux_nat_target::mourn_inferior () { + LINUX_NAT_SCOPED_DEBUG_ENTER_EXIT; + int pid = inferior_ptid.pid (); purge_lwp_list (pid); -- 2.25.4