From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mailsec210.isp.belgacom.be (mailsec210.isp.belgacom.be [195.238.22.106]) by sourceware.org (Postfix) with ESMTPS id CBE593858400 for ; Thu, 19 Aug 2021 10:57:08 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org CBE593858400 IronPort-SDR: cL78l1OfwOjtrC+gtFmeYG8i+aS59z1TFnkn4AzWstk+vmpQBM98+8rNX0gh8UkExIoFXhg37E HcWm3PJxi6beMfjHpLXkRT+I2U4YLuT8yn1xSXLGlaFo3W4oJB+6xbA8cqsiOmiU4V4Wl5A92T GKbYXkbl4F3CnwPstnJaryTFHZq4OFJKorleGOASNqJQ7WufTN15lWXdfBPRmyTeBjJELkptEh yKHM9XWiPkkaZvUCOzB41qcJfbiFLo6kXnFlaAAQvRm7kJNkVGWrHcH901Q2KobbhdRwD0/6uQ M3w= X-IPAS-Result: =?us-ascii?q?A2AUBADZOB5h/yFRiNlaHQEBAQEJARIBBQUBQAmBUIN4h?= =?us-ascii?q?TOJBIhqAzgBnS4LAQEBAQEBAQEBCT4BAgQBAYRjAoIwJjgTAQIEAQEBAQMCA?= =?us-ascii?q?wEBAQEFAQEGAQEBAQEBBQQBgSOFL0aCNSKDbAEFIwQvMwgDGAICJgICVweGD?= =?us-ascii?q?6ljfzKBAYRpg06BY4EQKocNgmyDejeBVUSEAzc+h1uCZASEdoEWWkyBNgkDk?= =?us-ascii?q?WQPjgSdTS2DMoExBgudEyymdSuVaaVHgXeBfW1TgmpPKJxyQmcCBgsBAQMJg?= =?us-ascii?q?QcIE4hfAQE?= IronPort-PHdr: A9a23:i/NafRUDgwibnsotbIXPWprfVInV8KwQVTF92vMcY1JmTK2v8tzYM VDF4r011RmVB92duqwP0rKN+4nbGkU4qa6bt34DdJEeHzQksu4x2zIaPcieFEfgJ+TrZSFpV O5LVVti4m3peRMNQJW2aFLduGC94iAPERvjKwV1Ov71GonPhMiryuy+4ZLebxtUiDanZb5/L Rq6oRjNusQYnIBvNrs/xhzVr3VSZu9Y33loJVWdnxb94se/4ptu+DlOtvwi6sBNT7z0c7w3Q rJEAjsmNXs15NDwuhnYUQSP/HocXX4InRdOHgPI8Qv1Xpb1siv9q+p9xCyXNtD4QLwoRTiv6 bpgRRn1gykFKjE56nnahM9tgqxbvhyvqR5ww4DIb46bO/VwcbjQfc8YSGdbQspdSzZMD4G6Y oASD+QBJ+FYr4zlqlUUrRu+BA2sBOL3yj9QmHD9wK013P47EQHBxQwgAtMOv2rOrNXuKawfV vi1zKnJzTXHbvNWwS/955bSfhEvu/6MR7VwcdPMyUkuCQzFlE6QpJf+PzOW1uUNtXaU7/Z6W e20lWEqsgd8qSWgyckwkIfGnJ4Vykza+iVjxoY4PcO0RFB4bNO4H5Zcqz2WOol2T84tXmxmu Do2x7IJt5C7YSUHxpAqygDRZfGZfYWF4RHuWeiQLDp4in9od7ayihe0/EO9yeP8TtG53EhXo idHiNXAq34A2h3J5sWEV/dx5Ems1DiJ2gvO8O9LO1o0mrDeK5M5x74wkYccvlrbEy/tnUX2k LeWdkI5+ui08+jnYqvpppubN4JsjwHxL7wims25AesmLggDR3aX9fm+2bH54EH0TrRHguc1n 6XEqpzXK8oWqra8AwBP04Yj7xi/Dy2h0NQdhXQHNFJFeBODj4joI1HOOO73Ae2xglu2ijdrw OnGPqDgAprTNHjDi6zsfa1+609czgo808xf64hPBb4fOP7zQFP+tMTEDh8lNAy52/7nCM541 oMfRWKPArSUMKzUsV+V/O4vJPOMZIANsjbnN/cl/+LujWM+mVIFcqmmwIAYZWujHvRhPkWZe 2bjjckPEGgQpAoxUvbmiFqYUT5cND6OWPck/TQ6FIKOAoHeAIe3j/jJ0yuxNoZRe3pNB0+FC 3qucJ+LCNkWbyfHGs9glj0cTbXpdIY70giztQLg0PIzNurV/iwArZ+ly9Fv4PTOlBwo7hRvD NWb3n3LRWwizTBAfCM/wK0q+R818VyEy6Ut25Rl IronPort-HdrOrdr: A9a23:MIZxdajoPUuAj5BCSjhQtlA6cHBQXs8ji2hC6mlwRA09TyX+rb HKoB1773/JYVkqN03I9ersBEDEex3hHP1OkOss1NWZNzUO0VHARL2Kr7GC/9SKIUfDH4BmuZ uIP5IOa+HNMQ== X-IronPort-Anti-Spam-Filtered: true Received: from 33.81-136-217.adsl-dyn.isp.belgacom.be (HELO md) ([217.136.81.33]) by relay.proximus.be with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 19 Aug 2021 12:56:43 +0200 Message-ID: <774408cfd5398ab01814341b1e22194170fec354.camel@skynet.be> Subject: Re: Tools to debug multiple cores/processes at the same time? From: Philippe Waroquiers To: psmith@gnu.org, gdb@sourceware.org Date: Thu, 19 Aug 2021 12:56:42 +0200 In-Reply-To: References: <3ba28620390947de2a84cabbd1958852aad97d5e.camel@gnu.org> <97D56F18-F336-45CD-9258-CB884C7F76E5@comcast.net> Content-Type: text/plain; charset="UTF-8" User-Agent: Evolution 3.30.5-1.1 MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-6.9 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: gdb@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 19 Aug 2021 10:57:19 -0000 On Wed, 2021-08-18 at 17:09 -0400, Paul Smith via Gdb wrote: > On Wed, 2021-08-18 at 16:53 -0400, Paul Koning wrote: > > There is multiple target support, which I haven't had a chance to try > > yet but from what I remember reading is a recently added GDB > > feature. It should handle your case plus even stranger ones, such as > > multiple processes running different code, or even running on > > different instruction sets. It's just what you need for debugging > > distributed applications. > > Yeah, I saw that, and it might be the kernel of something that could > support what I'm talking about, except I don't think it manages > different "convenience variable namespaces" per inferior. > > But the main thing is it doesn't seem like it supports running the same > command in all inferiors, other than by manually setting each one and > running the command. Maybe some kind of embedded Python facility could > be created to do this, such as John mentions... I'm not sure what the > python support is currently for multiple inferiors. > > Let me give an example of a debugging session: > > * start a session with 3 core files > > * run a command that shows info about each core (assume a python > "showinfo" command that show all threads with some details about each > one). Maybe a command like: > (gdb) all: showinfo > i1: > i2: > i3: info threads should show the threads of all inferiors. > > * For each core, go to a certain thread (of course the thread numbers > will be different in each core): > (gdb) i1: thr 7 > (gdb) i2: thr 9 > (gdb) i3: thr 23 thread INFERIORNR.THREADNR will switch to the listed thread. > > * Run a command that returns some value and stores it in a convenience > variable, on all cores: > (gdb) all: set $v = $findstuff() > > * Run a command that shows some value, on all cores: > (gdb) all: p $v->someDetail > i1: $1 = 7 > i2: $1 = 44 > i3: $1 = 165 > > I dunno, something like that. Alternatively maybe it would be simpler > for output for each inferior to go to a separate terminal or whatever. The command 'thread apply' can apply a command to all threads or to a selected list of threads. If you have multiple inferiors, the command can then be run for all threads of all inferiors. I do not see an (easy) way to run a command only once per inferior, when an inferior has multiple threads. For this, likely, the best would be to have a new gdb command such as inferior apply all | INFERIOR-LIST Note that the command 'show convenience' lists a convenience variable $_inferior. Philippe