From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id PweeIvWvdGnExRIAWB0awg (envelope-from ) for ; Sat, 24 Jan 2026 06:41:41 -0500 Authentication-Results: simark.ca; dkim=pass (2048-bit key; unprotected) header.d=yahoo.de header.i=@yahoo.de header.a=rsa-sha256 header.s=s2048 header.b=tObzD98M; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id 6B09A1E08D; Sat, 24 Jan 2026 06:41:41 -0500 (EST) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-2.4 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_00, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_CERTIFIED_BLOCKED, RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED autolearn=ham autolearn_force=no version=4.0.1 Received: from vm01.sourceware.org (vm01.sourceware.org [38.145.34.32]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id 2B9621E08D for ; Sat, 24 Jan 2026 06:41:40 -0500 (EST) Received: from vm01.sourceware.org (localhost [127.0.0.1]) by sourceware.org (Postfix) with ESMTP id 9F0FE4BA9016 for ; Sat, 24 Jan 2026 11:41:39 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 9F0FE4BA9016 Authentication-Results: sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=yahoo.de header.i=@yahoo.de header.a=rsa-sha256 header.s=s2048 header.b=tObzD98M Received: from sonic306-19.consmr.mail.ir2.yahoo.com (sonic306-19.consmr.mail.ir2.yahoo.com [77.238.176.205]) by sourceware.org (Postfix) with ESMTPS id 9CFE34BA23C1 for ; Sat, 24 Jan 2026 11:41:12 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 9CFE34BA23C1 Authentication-Results: sourceware.org; dmarc=pass (p=reject dis=none) header.from=yahoo.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=yahoo.de ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 9CFE34BA23C1 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=77.238.176.205 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1769254872; cv=none; b=WtjWi1nUQqgsq1DYxj8auTy97+nqT5UjOGwc7p8APi+7sjArl9ENq/BnxGivsib8Dmw8jwuH3EJARqmGJl34jJmmDaw5FlUNTPnTXQ8h9Hs98LLJIieQB+1GHyThv6UG0/7nFKFc1wjSYIaao5HR0oJAGnqfsaOhVVFP5VITGC0= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1769254872; c=relaxed/simple; bh=OA2VHpujwYeVQR/7O7wHDp9ofuvt/IoIO3vjKhUXlt8=; h=DKIM-Signature:Date:From:To:Message-ID:Subject:MIME-Version; b=vM5MrE1PE40h9q67ZFLhDGlmdGxcQsvv9MLRmTBVLhAkNksyE0UE+nLdavAmsgeRx6Frs/vAVjfrUpu4Ns6qeFIdXujie6jcYDADcewbf71936Yh8SO7Bw6OaQAOGNsBUp0dzsOjSvSr//E4V1OsUF1Q4/mzbkfKVtt2rbab7H0= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 9CFE34BA23C1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.de; s=s2048; t=1769254871; bh=OA2VHpujwYeVQR/7O7wHDp9ofuvt/IoIO3vjKhUXlt8=; h=Date:From:To:In-Reply-To:References:Subject:From:Subject:Reply-To; b=tObzD98MletaT4oEtkRntYtWv3h90ghaEZi68JiBaB8sLPjtQBHIM5gQ2A3tf3RqgWbp81tsOI0iuji+/xAtO9ErKOrb0pnP19ybtKb6fLvx/pP2pyKLNX5edGu3QUw+ZtFb+PyU3QqmStJXzhrVgY5Ykpy0Y4kpdo9YRPzMyc4w3DupAAnTb3xmtmBHdKIgnjaIeOSsySGqqyZXf3OXpAAp3KV/IH0D2DbCNx/tIR1/kSWmoyJny+aM0VzXNwPIGhsporO1nSe7VtSNyFqq9Ofe/E0vTc3NZQx5bLcnOvArtAHe4VJ3KBVa0pL2y77dKXndNdQVQ+VfJRDzSjJRLw== X-SONIC-DKIM-SIGN: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1769254871; bh=GamIHbpPSGXnFK4KRvw7RTrPU6gQ5oclwgSCkcq+TwO=; h=X-Sonic-MF:Date:From:To:Subject:From:Subject; b=IHeTp3jYamK422hvq+Xqro5fMbec4UGaAjAIG6UWoV5Om9qj95WsCBoXzXmYw6YnGpO40o2QQhV5edRfmEMvh7cJe5lHyNceuj5MmZowHnFp0qaQ7xL6qiCIlwksXRRaLj3sUWAw6PkiQZbxfKGNDMuE5ePYwmzi2HFMOopdapy+1ghvTLtuRgZjeG6xymvIPvVpEaPzVGzS5+jkbZSpfFux2CpTWHtDqm6p6oz7kbSOyi3Zz5ADhtTmWpO7Orv4/a73VpDhnJdCernSmo+ujoQ39vB1Fog2JKBrJv3ysNkGxwtHNHwu1EY6NaMjJZWSg/RcWXSiNRU4vMagf3PYlg== X-YMail-OSG: HKnk_6cVM1m6IyphZIQIKKLDWCFy5jN9IUNBHcUMg.63xSN1JnlzzoPdTty_xnB 284Mma3TN_SksqIMyMf379XFOcbDtOMct9iyaI3vgTKJ3jRUBbU9dMRAQb7YEh1k.A9Ktv2cg0zZ _P2sVUYa1JkV0c91XQP0sMelJqlv2VsQlQntMGGQ_d_OP.ht07laUUAqU1ZJn4DyuAmLRKLcEvsA 4sB33SdEOzJ4jVzECjZgcqHlygepHYlRGOP7_SEHFMFbHPuTRRyct3gKP_x0nnWcG61tpdZTZ4_U nGUxkY0IV_6Zm8Piz0MQyKTC77FCO..xSrZWwI_O7eJaCW8TAddw5daRUb0t36cUbX65gI_FjvOw lNEWei8g0VVL9mkh6EQlxkQXisa5CBTarskYcgz0yry6fRJ2mUIE0Gxa5SK0VS0GG_jBD9D0Q25s aNM25IqGC7Utx6VtWPFzRZmvp0ysPRFfsnsUN00C0JOki312I5RterJKTQqHm4yD9.lcIXTSOQCE RR7Lh4qKQEKJ2wjvATp0XKvYeaKOG2PQYyDB_HmznMC7DWKw4jhqgS0ByGY4xA5ro6Kv0kBIpmC7 v1I.qhLyAJU0BQeyiNQaTeDRZNe64EnVXtJB3ip6Bh4EtUXPakcLf4ehquPlTLZyuGyQldwLtoTl DN0Uu3kFOTeRZeTJ9THQe1Pb7ma5nZVnNaTEctd9xC7g25UhFAYTK4N7yIQgDjGGa8McHvbpyUHo L3kPqGj4p7cyJHC4A9YdQaHQDB7.pJeOsBh6HoNXESHIey5KP_tPMnVLFZan6MFfzAu6ZOYpUMCu PVkMlQ6NuetEk2cDvJruHd1rdzzp.M6aM24ll.NyK5Gz_n_bHhUoG_yLx.4Yd2TPafbNspNFwBAo fwDx.9oHczw0V0SiTPfl6u6A7j3xRAZwxzOEtE0_QFYO3GEWbZs_uoV1dlzATd8ANKlUuvrhXtHG U_tUauIr9lOM2BdNlC5ZN0Gj_RKCpWZH2NJxZK6KywuLLrrHU4kXfSe0fFzhrEdykZuPu4Ipcd3p kJuS0I_GbjB.0HlrUU6mqd7zrl0M5bTRLnh.Ctu.ce8odd2kBduR.cyuS8a6GoDFHscL0Sljo2p0 XKG_DCdcUoChjz49noPk1A0jhqsGb6toQ17f2F00E.uTV.05SJDm.TkZWCzwe64OsMN49vw8ky3V UIQojmbF6btOeOo6jIk_hX_...ZrW_0WqVFOF_FWhFhrc34LqT_P9cnbRHPjWZS6mg7403zOHNNG WWWIP2g2Xexz3mMHy99uN6zCHggLKrXc485PEyrrNlzQkm93g6mEEpXPyyNwiYLjFhnOJsSxcLM3 4JZRhzJK3CUb1DvZcW9A_FVxEFsN7bU_Lwraxt5mZRlfOBuWdS1Qq2QGFl_KObh4yOawujucTtSg _tz9tZ_SxC1EOyD2WoI30q6pug7875MnIhTsGDyBZtMG.7Lgirk.FSR3LE3n.bWMvw_bS_A6vl.w 3V.esl6GhUDALaisGuIUGUGMzLCmyg9tyUxPmJNNR20UP64CMlJJYX77Aw5B8BkxE.wBvVQQl3fr UBpzjXyHoCQvH73wNaIcF.E3QQIZES8nXoznvKyOYRxGnV9Pbsmjvwpuaw_2gj17lqs6dvMaUB3W .GNAyWvOJwLEdh4fFZtdWsZMUvRCmW5G7MoASBruqhLvg0.AbL.AnDZGntUqGXIW9elcp8NZBOr5 A6pkDIsHt4LAYSXDotiLEt8I2G8AaSfhF48Pzisn.c7KGG4JE3tYBVBc6nDvZk8XKJyOtJYub3ZZ V492yi6MnbR3Ta9HXm.nzxj3PINGzm7WffQo7oZisYH6qSNutKuwWjK8vmBKDOqkKEDklu7diOzM vukhT0w.fsYVea6taOqHty5MNVe0bWp9X1mhHRlt2aJfLAul3KgAYwqaCfwQUKWCmOz9_8p6wxEy ARborP_TuUL0zHgsUg2eMai1yJxXl2nmZOs3Lxh5C7jKN5e4XxbZ4MIsSCHEA8Y6TngGlS54VJD5 TWxDdEWpovTWin_iqu3CkXXCNwZoycUCBRj38uGPr8gn3cR0fvNnEcbPf0uvzVl.xUZvAPRZ6aFT iFunB.6I7.xQ.rc56KKtzuS3r53b9Fv92TKNbjJmoiMSHb5DC0cPzSQ3SL8B_RDsjCzfTW0Yq7wI tYOL30zctzUPNYqfYvDYkWQl2tO3U6OoXgPD7OnjwnVPqqc__BJZ1s2YiLCoOCqaaL7bpE9YhfCS WdNLf6hWrofdRQe.pts288g_Durh2 X-Sonic-MF: X-Sonic-ID: 48e1423b-ae95-496f-978e-3bf7b876ff8b Received: from sonic.gate.mail.ne1.yahoo.com by sonic306.consmr.mail.ir2.yahoo.com with HTTP; Sat, 24 Jan 2026 11:41:11 +0000 Date: Sat, 24 Jan 2026 11:41:10 +0000 (UTC) From: Hannes Domani To: "gdb-patches@sourceware.org" , Guinevere Larsen Message-ID: <219427526.4910854.1769254870963@mail.yahoo.com> In-Reply-To: <20260122202834.393095-1-guinevere@redhat.com> References: <20260122202834.393095-1-guinevere@redhat.com> Subject: Re: [PATCH v2] gdb: add tutorial command MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-Mailer: WebService/1.1.24987 YMailNorrin X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gdb-patches-bounces~public-inbox=simark.ca@sourceware.org Am Donnerstag, 22. Januar 2026 um 21:30:04 MEZ hat Guinevere Larsen Folgendes geschrieben: > Before this commit, there is little way for a new user to learn how to > use GDB on their own.=C2=A0 The documentation contains an example session= , > but that isn't contained in GDB itself, and the "help" and "apropos" > commands exist, but they aren't the best to really teach what GDB can > do, only to describe commands on their own. >=C2=A0 > This commit changes this by introducing a command called "tutorial", > which takes a page out of common design from the last few decades and > provides a self-contained tutorial for users, walking them through a > simple bug in C code, and explaining several commands in context. >=C2=A0 > The tutorial is mostly implemented (ab)using the before_prompt hook to > print the messages, so that users can have completion, history and so > on, and it is implemented in python to make maintaining it in the future > as simple as possible. > --- > +def cleanup(): > +=C2=A0 =C2=A0 print( > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 """ > +Thank you for taking this tutorial.=C2=A0 We hope it has been > +helpful for you.=C2=A0 If you found any bugs or would like to > +provide feedback, feel free to send do so through IRC, in > +the #gdb room of libera.chat, or send an email to > +gdb@sourceware.org. > +To recap, these were the commands explained in the tutorial > +=C2=A0 * shell The shell command was not explained. > +=C2=A0 * file > +=C2=A0 * start > +=C2=A0 * continue > +=C2=A0 * list > +=C2=A0 * break > +=C2=A0 * print > +=C2=A0 * step > +=C2=A0 * next > +=C2=A0 * display > +=C2=A0 * watch > +=C2=A0 * quit > +=C2=A0 * help > +=C2=A0 """ > +=C2=A0 =C2=A0 ) > +=C2=A0 =C2=A0 gdb.events.before_prompt.disconnect(tutorial_hook) > +=C2=A0 =C2=A0 gdb.events.exited.disconnect(tutorial_exit_hook) > +=C2=A0 =C2=A0 # Clean up example code. At the end of the tutorial I get this warning: warning: BFD: reopening /home/src/a.out: No such file or directory I've silenced it by adding this line here: =C2=A0 =C2=A0 gdb.execute("file") But then I get these warnings instead: Error in re-setting breakpoint 2: No source file named example_code.c. Error in re-setting breakpoint 3: No symbol table is loaded.=C2=A0 Use the = "file" command. So I've also added this line before the other: =C2=A0 =C2=A0 gdb.execute("delete breakpoints") Then all warnings were gone. > +=C2=A0 =C2=A0 try: > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 f =3D open(generated_code) > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 f.close() > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 os.remove(generated_code) > +=C2=A0 =C2=A0 except FileNotFoundError: > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 # File doesn't exist, nothing to do. > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 pass > +=C2=A0 =C2=A0 try: > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 f =3D open(generated_binary) > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 f.close() > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 os.remove(generated_binary) > +=C2=A0 =C2=A0 except FileNotFoundError: > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 # File doesn't exist, nothing to do. > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 pass > + Hannes