From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from sonic304-22.consmr.mail.ir2.yahoo.com (sonic304-22.consmr.mail.ir2.yahoo.com [77.238.179.147]) by sourceware.org (Postfix) with ESMTPS id 55B23381DC0F for ; Sat, 6 Mar 2021 17:35:28 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 55B23381DC0F X-SONIC-DKIM-SIGN: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1615052127; bh=vqm2H4HLrpnfclNnaDJ8sHzw8ZeNEcgguJZLbviGaqz=; h=X-Sonic-MF:From:To:Subject:Date:From:Subject; b=dyXhdcs08SxJZOaTEU2bGtb+T4qr+Y5bNJrJG8jYxI7EuJ97IGrev2TyJ9fgdlC7FIYtas3UpYdgYPeja6N0fhtfQJN9v7r64/ycW+/io6CFv5KMMtW2p1ciP3JZd86F2PiifoBjN2C5QhnxCqct/PHTlFknfwauZU1VKRpTNqrm+ZWP19ORjoIK3e1Wc2a2ERk9Y3FmzLmmXdzZQjfOwUnfQ4ER7znG2FtVPzokLjzMAhsXbIHCfW27UaXteXEouJC1ir794BoTJ3wHHTb9aowizN2TAZIJg6DqLvOA1+ALib0Qkgkp6LT8NSonpFOhriscUnzixVE4v/ygH+yHWw== X-YMail-OSG: viSROkAVM1mN4kPGlPSbBZvPr8NIZor7EqWIe_9N_nsdiy2Wv.PUmPP5vgTLgRW 2QVtkx4fO.yG2yFjdBSmDVLSUcvmSTDiyw8WriPZbMWYmHW3UypSGX.IjqBta8tXn0QgB9pFnumd PraJmp2zmSp6yBaAZZrXQ90sS_1E40MnWuzM3O1Bfv0Yv7Lu09rV.trCbIi_jyQEwx9FvkJnREkF l6njMgSRylDLOS1AbibN8GxXEQ5mFZDSrEPHFPel4D2LjjkYtWJ8wl9zMhBpEED9WVIqwyKli1BJ bh67TUKLluBvcBbYaImMwGEY2tDjcAZZebLJkU7HCElyDMBwoN1cVU275TviXL.9XMIvvNReMZcF iF_Tj948aeg_2VjL.XW.PDPT6M1HcuoGmeGRsq2aVi5hepVde1DFPJi7u9J5NfVRtSQ5UcLXN9hx QBOp2mKwTxbquAlJrU_MGBySvsbp47eMh8wnL5svlN6nWH1xPxkodHCsrAr1spCy_92o1JBjQxyb K0URXitFp9ziunOiZlhMTA3EB5S.wg1aRsFXwy22pGgxMR9wVIJ7EhGeftwYPcLOLmrmGBVR2U4G 4_wPHDXgosjOnN_vjwhV9up2U0hgsOaqgE1lJKRxBfIP1KVsZVJ51N.RmA4XPJczJrUfpepTqbH0 jnUVvWrPBpOnooanOxTnts.PGfRlULn9IXcOjzeTVCcST_8ad3JjWOMhBtMuakJYMAogm_e.cOET m3bDgXvIx8_dai85sdWHKpWEkxyUFAUBtEvNjTQ1L15E33yxjEUAifmAfeWLcoJs_ti3hPvY_6ok 4us_xR.tciPL5zjNx6Y4kP1_behfWmRSRPn2bO8c842_K6v0YSIISCzdu9m2fpdaBaJbRJNO..ry GJlm7Iyl5.hDHbUAg2oENOIi4Peo7s3L92GPBZS..IOxizXSLWz_eKsWXNgKMzLJn2v2FyeCXU3e 8R.p1ZSpYl0eTTz8dAoDl0Yfp2YewfQlsSlGDPucAgRlvQdKr7TboS3dYOL2R6Yn0FHkDvQYA7aV oHH8x3N6BEFNoUoqGyN.clut_7_2gAm4NSWtYt0Ui3YAVTQ0W2lIVrlA.mYefV4UVdW1pRLnYxte ls6m31tUQWP7QvDnvCTfVjyMhuD3xbjymD9UL0P3cRWfUoaXuHYyZUhMVdYF.7moeJWfelBtvX0l BSd5m6qbrwkgkYUoLrHoNHdBdXh5v5HnKG_LYtBBWy_pi.AFvYvgqDXNcXGcLWD1aKYjon5GR9X5 CDHQDRICm4t2uqXl0p9BnMer6OxO91XnIrLVfmRnvVNA2g6Cnx9Uq2Qt0kmUdKB_5VfW0ZyZrOha wJVEJGfBX10Ul7ZKdJq2g8ka.e_jQwlWWIl_I9lGwoW1iTVwwESFIoanJHyecdp7e11udweMIsVW nTLv3z1eJ2Kti4UWvzFqZiay533FpMv6jjwGxIzWG4kp.Buvc2GHRYr2RtZ8EP7s_lOQAVCuGvEo mJdmkB3qGWiudx47mdO27wIGaBf3hb971Lr3Vut3liF0w28a8s5y8.2F4KdNwSCnlImcbCM3kpH4 Nkm2RclhwhXkbWVIHWRy7st8eTfxjR7o9T.c2P25O_ZXshSwU4QrEnTHAi2nTSFSAM.QRNJWjaiM Ej2D9d0MgsjMq3TI9lzh7PGVnchzSyoTU6p1brXLsz7LRyWkMnP3GYiftYb6iF974rZIytPvHjLS RnNnDi80ZI1kCyP.vUwBwXe_veSWericyXBul_Jf5oD.OsdTRHkoyVM9ejJF9EdXsXEzsROPMRBG QLKadKBn_7jASkac2t2AzjfX1OYG8UviQQsMSLr0TjaCWSQav1C38f.L1lDdIKXYTuKDB8ruJsm6 HF8d32Hu.02ChVgBi6Z0_5kOE7sbiMEInVKz6iverxy6rEYpvraFWuRErFjnJ1_RhP9lfWpUTfk. XQIkByF3Hml3s81DOR7UEwfGEdxsoFrvcBHbwySVoIfY2ts6QnGG1QLko15LZGGIQxovP0NHZt0Z m2QUDMqy_kSOM0fLF10OMbEUcB2SPIltxwTnpWTf4PlbKCDL0GUAOFs2PdwUzbh2mkjwnTniAZ7. .moBgc7bmmO6IEVwts_33s6O21ytoxxsiDP7K_Ji8.0FwjINXNPP56FZiCrksUwpdrZa7TdPK_xe 4UpJrDBRQaCravU.1kJ8WZfs3khH.tR3C3vAXAFflOe66Wu.Oh0stdys4Hg6NJJC2jXqNNvEF21T OuRB4XVOfp9.GG1u68s5zFIvvnsg8l6j8xqUOC9PsmAzxS_txXMbAmDePr0jbgH7qOqz5vSQfq4S QeEHPFKpqYR2xKXpGT9fhL1ETw1Yllq7JNGnsIT5NwauDyDH1QOFe7WQws.Z2F6xypL0jOlnNeYq Upv9MCaqtdxeY6er5o0LPw8TePGFoW8fpoTEzVV8PnQEpR.Z8o8sgnaE_l.aP.sipRzQfHzk5yWj A.vOjmLjvI_B73L8bXMNJUA-- X-Sonic-MF: Received: from sonic.gate.mail.ne1.yahoo.com by sonic304.consmr.mail.ir2.yahoo.com with HTTP; Sat, 6 Mar 2021 17:35:27 +0000 Received: by smtp401.mail.ir2.yahoo.com (VZM Hermes SMTP Server) with ESMTPA ID 6a363949cca5081319e57edf8d5c0acc; Sat, 06 Mar 2021 17:35:24 +0000 (UTC) From: Hannes Domani To: gdb-patches@sourceware.org Subject: [PATCH 07/22] Implement threads TUI window Date: Sat, 6 Mar 2021 18:34:02 +0100 Message-Id: <20210306173417.21528-8-ssbssa@yahoo.de> X-Mailer: git-send-email 2.30.1 In-Reply-To: <20210306173417.21528-1-ssbssa@yahoo.de> References: <20210306173417.21528-1-ssbssa@yahoo.de> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Antivirus: Avast (VPS 210306-0, 03/06/2021), Outbound message X-Antivirus-Status: Clean X-Spam-Status: No, score=-10.6 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 06 Mar 2021 17:35:29 -0000 --- gdb/python/lib/gdb/command/tui_windows.py | 66 +++++++++++++++++++++++ 1 file changed, 66 insertions(+) diff --git a/gdb/python/lib/gdb/command/tui_windows.py b/gdb/python/lib/gdb/command/tui_windows.py index a495b19d208..c0699958782 100644 --- a/gdb/python/lib/gdb/command/tui_windows.py +++ b/gdb/python/lib/gdb/command/tui_windows.py @@ -594,8 +594,72 @@ class DisplayWindow(VariableWindow): yield VarNameValue(expr, v, sym_not_init, num, fmt, error) +template_re = None +def filter_templates(n): + global template_re + if template_re is None: + template_re = re.compile(r'(?)') + level = 0 + rest_arr = [] + for s in template_re.split(n): + if s == '<': + level += 1 + elif s == '>': + if level > 0: + level -= 1 + elif level == 0: + rest_arr.append(s) + return ''.join(rest_arr) + + +class ThreadsWindow(TextWindow): + def __init__(self, win): + super(ThreadsWindow, self).__init__(win, "threads") + + def refill(self): + if not self.win.is_valid(): + return + self.lines = [] + self.threads = [] + inferior = gdb.selected_inferior() + if inferior and inferior.is_valid(): + sel_thread = gdb.selected_thread() + if sel_thread and sel_thread.is_valid(): + sel_frame = gdb.selected_frame() + for thread in reversed(inferior.threads()): + thread.switch() + frame = gdb.newest_frame() + name = frame.name() + if not name: + name = format(frame.pc(), "#x") + else: + name = filter_templates(name) + num_str = "%d" % thread.num + if thread.ptid[1] > 0: + thread_id = thread.ptid[1] + else: + thread_id = thread.ptid[2] + id_str = "[%d]" % thread_id + name_col_s, name_col_e = "", "" + if thread.ptid == sel_thread.ptid: + name_col_s, name_col_e = "\033[1;37m", "\033[0m" + self.lines.append(num_str + ": " + name_col_s + id_str + " " + name + name_col_e) + self.threads.append(thread) + sel_thread.switch() + sel_frame.select() + self.redraw() + + def click(self, x, y, button): + line = y + self.line_ofs + if button == 1 and line < len(self.threads): + self.threads[line].switch() + gdb.selected_frame().select() + var_change_handler() + + gdb.register_window_type("locals", LocalsWindow) gdb.register_window_type("display", DisplayWindow) +gdb.register_window_type("threads", ThreadsWindow) def var_change_handler(event=None): @@ -609,7 +673,9 @@ gdb.events.before_prompt.connect(var_change_handler) gdb.execute("tui new-layout locals {-horizontal src 2 locals 1} 2 status 0 cmd 1") gdb.execute("tui new-layout display {-horizontal src 2 display 1} 2 status 0 cmd 1") gdb.execute("tui new-layout locals-display {-horizontal src 2 {locals 1 display 1} 1} 2 status 0 cmd 1") +gdb.execute("tui new-layout threads {-horizontal src 2 threads 1} 2 status 0 cmd 1") gdb.execute("alias ll = layout locals") gdb.execute("alias ld = layout display") gdb.execute("alias lld = layout locals-display") +gdb.execute("alias lt = layout threads") -- 2.30.1