From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 8978 invoked by alias); 5 Apr 2009 20:36:23 -0000 Received: (qmail 8970 invoked by uid 22791); 5 Apr 2009 20:36:22 -0000 X-SWARE-Spam-Status: No, hits=-1.6 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_44,SARE_MSGID_LONG40,SPF_PASS X-Spam-Check-By: sourceware.org Received: from smtp-out.google.com (HELO smtp-out.google.com) (216.239.45.13) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Sun, 05 Apr 2009 20:36:10 +0000 Received: from zps75.corp.google.com (zps75.corp.google.com [172.25.146.75]) by smtp-out.google.com with ESMTP id n35Ka8pq001638 for ; Sun, 5 Apr 2009 13:36:08 -0700 Received: from rv-out-0708.google.com (rvfc5.prod.google.com [10.140.180.5]) by zps75.corp.google.com with ESMTP id n35Ka6nM020534 for ; Sun, 5 Apr 2009 13:36:07 -0700 Received: by rv-out-0708.google.com with SMTP id c5so1513455rvf.32 for ; Sun, 05 Apr 2009 13:36:06 -0700 (PDT) MIME-Version: 1.0 Received: by 10.141.29.16 with SMTP id g16mr1785385rvj.92.1238963766553; Sun, 05 Apr 2009 13:36:06 -0700 (PDT) In-Reply-To: <20090404192132.GA28232@caradoc.them.org> References: <20090404184604.8524C1C759C@localhost> <200904041904.n34J4UXV013513@brahms.sibelius.xs4all.nl> <20090404192132.GA28232@caradoc.them.org> Date: Mon, 06 Apr 2009 02:58:00 -0000 Message-ID: Subject: Re: improved thread id reporting From: Doug Evans To: gdb@sourceware.org Content-Type: multipart/mixed; boundary=000e0cd1754831ee490466d4bbf1 X-System-Of-Record: true X-IsSubscribed: yes Mailing-List: contact gdb-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-owner@sourceware.org X-SW-Source: 2009-04/txt/msg00067.txt.bz2 --000e0cd1754831ee490466d4bbf1 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-length: 4963 On Sat, Apr 4, 2009 at 12:21 PM, Daniel Jacobowitz wrote: > On Sat, Apr 04, 2009 at 09:04:30PM +0200, Mark Kettenis wrote: >> > Date: Sat, =A04 Apr 2009 11:46:04 -0700 (PDT) >> > From: dje@google.com (Doug Evans) >> > >> > Hi. >> > >> > GDB's current reporting of thread ids has (at least) three problems (I= MO): >> > 1) Reporting the pthread id (e.g. 0x0xf7e5cbb0) has a very low S/N rat= io. >> >> Uh? =A0I'd say it has a very high S/N ratio; it's the only thing that >> you can actually use to identify a thread to a particular thread >> created by the code you're debugging. >> >> Also realize that whatever is printed now between () is OS-specific >> information that varies from OS to OS and may even be completely >> absent in the case of user-level threads libraries. > > I agree with Mark. =A0I think the existing IDs are quite handy. > >> > 2) When switching to a thread IWBN to also report the thread being swi= tched >> > =A0 =A0from, otherwise one has to scrollback through the session to fi= nd it >> > =A0 =A0(assuming that's even possible). >> >> That's not an unreasonable suggestion. > > Agreed, although I'm curious what people think of "to X from Y" vs > "from Y to X" - I found your sample visually confusing. > >> > 3) When reporting thread ids the only usable number in the gdb session >> > =A0 =A0(gdb's internal thread number) is not included. >> >> I don't consider this to be a big issue. =A0If I need a GDB internal >> thread number, I find it no problem to just use the "info threads" >> command and make decisions based on that. =A0I'd expect that to be much >> more convenient than scrollback through the session ;) >> >> That said, if it's possible to print them without creating additional >> line breaks on an 80-column wide screen, I have no objections. > > I'd find these helpful. Attached is a simplistic patch to help illustrate the challenge. Here is an example session that prints from/to and the thread number in "[New ...", "[Switching ...", etc. messages. I can think of two issues with the patch: 1) Printing "[tT]hread" twice in one line is a bit annoying. 2) Spreading from/to over two lines is a bit annoying. Fixing (1) might simply involve agreeing on a way to add the thread number to the text without the additional word "thread". [Having all the *_pid_to_str routines print "Thread" is getting in the way.] I can fix (2), but I can't think of a way to fix it that would be approved. Suggestions? If we can agree on what the output should look like, I'll submit a patch for approval. Comments? gdb$ ./gdb -nx testsuite/gdb.threads/interrupted-hand-call GNU gdb (GDB) 6.8.50.20090404-cvs Copyright (C) 2009 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "x86_64-linux". For bug reporting instructions, please see: ... (gdb) b thread_entry Breakpoint 1 at 0x40040a: file ../../../../src/gdb/testsuite/gdb.threads/interrupted-hand-call.c, line 77. (gdb) r Starting program: /usr/local/g3/gnu/sourceware/thread-id/build/obj64/gdb/testsuite/gdb.thread= s/interrupted-hand-call [Thread debugging using libthread_db enabled] [New thread #2, Thread 0x40800960 (LWP 14406)] [New thread #3, Thread 0x41001960 (LWP 14407)] [Switching from thread #1, Thread 0x2aaaab6b0f30 (LWP 14403) to thread #2, Thread 0x40800960 (LWP 14406)] Breakpoint 1, thread_entry (unused=3D0x0) at ../../../../src/gdb/testsuite/gdb.threads/interrupted-hand-call.c:77 77 incr_thread_count (); (gdb) c Continuing. [Switching from thread #2, Thread 0x40800960 (LWP 14406) to thread #3, Thread 0x41001960 (LWP 14407)] Breakpoint 1, thread_entry (unused=3D0x0) at ../../../../src/gdb/testsuite/gdb.threads/interrupted-hand-call.c:77 77 incr_thread_count (); (gdb) c Continuing. [New thread #4, Thread 0x41802960 (LWP 14408)] [Switching from thread #3, Thread 0x41001960 (LWP 14407) to thread #4, Thread 0x41802960 (LWP 14408)] Breakpoint 1, thread_entry (unused=3D0x0) at ../../../../src/gdb/testsuite/gdb.threads/interrupted-hand-call.c:77 77 incr_thread_count (); (gdb) c Continuing. [New thread #5, Thread 0x42003960 (LWP 14409)] [Switching from thread #4, Thread 0x41802960 (LWP 14408) to thread #5, Thread 0x42003960 (LWP 14409)] Breakpoint 1, thread_entry (unused=3D0x0) at ../../../../src/gdb/testsuite/gdb.threads/interrupted-hand-call.c:77 77 incr_thread_count (); (gdb) c Continuing. [Thread #4, Thread 0x41802960 (LWP 14408) exited] [Thread #3, Thread 0x41001960 (LWP 14407) exited] [Thread #2, Thread 0x40800960 (LWP 14406) exited] [Thread #5, Thread 0x42003960 (LWP 14409) exited] Program exited normally. --000e0cd1754831ee490466d4bbf1 Content-Type: text/plain; charset=US-ASCII; name="print-thread-num.patch.txt" Content-Disposition: attachment; filename="print-thread-num.patch.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ft66z88d0 Content-length: 6105 SW5kZXg6IGluZi10dHJhY2UuYwo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJD UyBmaWxlOiAvY3ZzL3NyYy9zcmMvZ2RiL2luZi10dHJhY2UuYyx2CnJldHJp ZXZpbmcgcmV2aXNpb24gMS40NApkaWZmIC11IC1wIC11IC1wIC1yMS40NCBp bmYtdHRyYWNlLmMKLS0tIGluZi10dHJhY2UuYwkxNyBNYXIgMjAwOSAxOToy ODowOSAtMDAwMAkxLjQ0CisrKyBpbmYtdHRyYWNlLmMJNSBBcHIgMjAwOSAy MDoxMzoyNSAtMDAwMApAQCAtMTA4MSw5ICsxMDgxLDEwIEBAIGluZl90dHJh Y2Vfd2FpdCAoc3RydWN0IHRhcmdldF9vcHMgKm9wcywKICAgICAgIHJldHVy biBwdGlkOwogCiAgICAgY2FzZSBUVEVWVF9MV1BfRVhJVDoKLSAgICAgIGlm IChwcmludF90aHJlYWRfZXZlbnRzKQotCXByaW50Zl91bmZpbHRlcmVkIChf KCJbJXMgZXhpdGVkXVxuIiksIHRhcmdldF9waWRfdG9fc3RyIChwdGlkKSk7 CiAgICAgICB0aSA9IGZpbmRfdGhyZWFkX3BpZCAocHRpZCk7CisgICAgICBp ZiAocHJpbnRfdGhyZWFkX2V2ZW50cykKKwlwcmludGZfdW5maWx0ZXJlZCAo XygiW1RocmVhZCAjJWQsICVzIGV4aXRlZF1cbiIpLAorCQkJICAgdGktPm51 bSwgdGFyZ2V0X3BpZF90b19zdHIgKHB0aWQpKTsKICAgICAgIGdkYl9hc3Nl cnQgKHRpICE9IE5VTEwpOwogICAgICAgKChzdHJ1Y3QgaW5mX3R0cmFjZV9w cml2YXRlX3RocmVhZF9pbmZvICopdGktPnByaXZhdGUpLT5keWluZyA9IDE7 CiAgICAgICBpbmZfdHRyYWNlX251bV9sd3BzLS07CkBAIC0xMDk3LDEwICsx MDk4LDEwIEBAIGluZl90dHJhY2Vfd2FpdCAoc3RydWN0IHRhcmdldF9vcHMg Km9wcywKICAgICBjYXNlIFRURVZUX0xXUF9URVJNSU5BVEU6CiAgICAgICBs d3BpZCA9IHR0cy50dHNfdS50dHNfdGhyZWFkLnR0c190YXJnZXRfbHdwaWQ7 CiAgICAgICBwdGlkID0gcHRpZF9idWlsZCAodHRzLnR0c19waWQsIGx3cGlk LCAwKTsKLSAgICAgIGlmIChwcmludF90aHJlYWRfZXZlbnRzKQotCXByaW50 Zl91bmZpbHRlcmVkKF8oIlslcyBoYXMgYmVlbiB0ZXJtaW5hdGVkXVxuIiks Ci0JCQkgIHRhcmdldF9waWRfdG9fc3RyIChwdGlkKSk7CiAgICAgICB0aSA9 IGZpbmRfdGhyZWFkX3BpZCAocHRpZCk7CisgICAgICBpZiAocHJpbnRfdGhy ZWFkX2V2ZW50cykKKwlwcmludGZfdW5maWx0ZXJlZChfKCJbVGhyZWFkICMl ZCwgJXMgaGFzIGJlZW4gdGVybWluYXRlZF1cbiIpLAorCQkJICB0aS0+bnVt LCB0YXJnZXRfcGlkX3RvX3N0ciAocHRpZCkpOwogICAgICAgZ2RiX2Fzc2Vy dCAodGkgIT0gTlVMTCk7CiAgICAgICAoKHN0cnVjdCBpbmZfdHRyYWNlX3By aXZhdGVfdGhyZWFkX2luZm8gKil0aS0+cHJpdmF0ZSktPmR5aW5nID0gMTsK ICAgICAgIGluZl90dHJhY2VfbnVtX2x3cHMtLTsKSW5kZXg6IGluZnJ1bi5j Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvc3JjL3Ny Yy9nZGIvaW5mcnVuLmMsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMzY3CmRp ZmYgLXUgLXAgLXUgLXAgLXIxLjM2NyBpbmZydW4uYwotLS0gaW5mcnVuLmMJ MjUgTWFyIDIwMDkgMjE6NTM6MTAgLTAwMDAJMS4zNjcKKysrIGluZnJ1bi5j CTUgQXByIDIwMDkgMjA6MTM6MjUgLTAwMDAKQEAgLTQyNzQsNyArNDI3NCwx MSBAQCBub3JtYWxfc3RvcCAodm9pZCkKICAgICAgICYmIGxhc3Qua2luZCAh PSBUQVJHRVRfV0FJVEtJTkRfRVhJVEVEKQogICAgIHsKICAgICAgIHRhcmdl dF90ZXJtaW5hbF9vdXJzX2Zvcl9vdXRwdXQgKCk7Ci0gICAgICBwcmludGZf ZmlsdGVyZWQgKF8oIltTd2l0Y2hpbmcgdG8gJXNdXG4iKSwKKyAgICAgIHBy aW50Zl9maWx0ZXJlZCAoXygiW1N3aXRjaGluZyBmcm9tIHRocmVhZCAjJWQs ICVzXG4iKSwKKwkJICAgICAgIHBpZF90b190aHJlYWRfaWQgKHByZXZpb3Vz X2luZmVyaW9yX3B0aWQpLAorCQkgICAgICAgdGFyZ2V0X3BpZF90b19zdHIg KHByZXZpb3VzX2luZmVyaW9yX3B0aWQpKTsKKyAgICAgIHByaW50Zl9maWx0 ZXJlZCAoXygiICAgICAgICAgICAgIHRvIHRocmVhZCAjJWQsICVzXVxuIiks CisJCSAgICAgICBwaWRfdG9fdGhyZWFkX2lkIChpbmZlcmlvcl9wdGlkKSwK IAkJICAgICAgIHRhcmdldF9waWRfdG9fc3RyIChpbmZlcmlvcl9wdGlkKSk7 CiAgICAgICBhbm5vdGF0ZV90aHJlYWRfY2hhbmdlZCAoKTsKICAgICAgIHBy ZXZpb3VzX2luZmVyaW9yX3B0aWQgPSBpbmZlcmlvcl9wdGlkOwpJbmRleDog bGludXgtbmF0LmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTog L2N2cy9zcmMvc3JjL2dkYi9saW51eC1uYXQuYyx2CnJldHJpZXZpbmcgcmV2 aXNpb24gMS4xMjgKZGlmZiAtdSAtcCAtdSAtcCAtcjEuMTI4IGxpbnV4LW5h dC5jCi0tLSBsaW51eC1uYXQuYwkxIEFwciAyMDA5IDE5OjA3OjUwIC0wMDAw CTEuMTI4CisrKyBsaW51eC1uYXQuYwk1IEFwciAyMDA5IDIwOjEzOjI1IC0w MDAwCkBAIC0xMTU5LDcgKzExNTksOCBAQCBleGl0X2x3cCAoc3RydWN0IGx3 cF9pbmZvICpscCkKICAgaWYgKHRoKQogICAgIHsKICAgICAgIGlmIChwcmlu dF90aHJlYWRfZXZlbnRzKQotCXByaW50Zl91bmZpbHRlcmVkIChfKCJbJXMg ZXhpdGVkXVxuIiksIHRhcmdldF9waWRfdG9fc3RyIChscC0+cHRpZCkpOwor CXByaW50Zl91bmZpbHRlcmVkIChfKCJbVGhyZWFkICMlZCwgJXMgZXhpdGVk XVxuIiksCisJCQkgICB0aC0+bnVtLCB0YXJnZXRfcGlkX3RvX3N0ciAobHAt PnB0aWQpKTsKIAogICAgICAgZGVsZXRlX3RocmVhZCAobHAtPnB0aWQpOwog ICAgIH0KSW5kZXg6IHByb2Nmcy5jCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K UkNTIGZpbGU6IC9jdnMvc3JjL3NyYy9nZGIvcHJvY2ZzLmMsdgpyZXRyaWV2 aW5nIHJldmlzaW9uIDEuMTAyCmRpZmYgLXUgLXAgLXUgLXAgLXIxLjEwMiBw cm9jZnMuYwotLS0gcHJvY2ZzLmMJMTcgTWFyIDIwMDkgMTk6Mjg6MDkgLTAw MDAJMS4xMDIKKysrIHByb2Nmcy5jCTUgQXByIDIwMDkgMjA6MTM6MjUgLTAw MDAKQEAgLTQwNDYsNyArNDA0Niw4IEBAIHdhaXRfYWdhaW46CiAJCWlmIChz eXNjYWxsX2lzX2x3cF9leGl0IChwaSwgd2hhdCkpCiAJCSAgewogCQkgICAg aWYgKHByaW50X3RocmVhZF9ldmVudHMpCi0JCSAgICAgIHByaW50Zl91bmZp bHRlcmVkIChfKCJbJXMgZXhpdGVkXVxuIiksCisJCSAgICAgIHByaW50Zl91 bmZpbHRlcmVkIChfKCJbVGhyZWFkICMlZCwgJXMgZXhpdGVkXVxuIiksCisJ CQkJCSBwaWRfdG9fdGhyZWFkX2lkIChyZXR2YWwpLAogCQkJCQkgdGFyZ2V0 X3BpZF90b19zdHIgKHJldHZhbCkpOwogCQkgICAgZGVsZXRlX3RocmVhZCAo cmV0dmFsKTsKIAkJICAgIHN0YXR1cy0+a2luZCA9IFRBUkdFVF9XQUlUS0lO RF9TUFVSSU9VUzsKQEAgLTQxODIsNyArNDE4Myw4IEBAIHdhaXRfYWdhaW46 CiAJCWVsc2UgaWYgKHN5c2NhbGxfaXNfbHdwX2V4aXQgKHBpLCB3aGF0KSkK IAkJICB7CiAJCSAgICBpZiAocHJpbnRfdGhyZWFkX2V2ZW50cykKLQkJICAg ICAgcHJpbnRmX3VuZmlsdGVyZWQgKF8oIlslcyBleGl0ZWRdXG4iKSwKKwkJ ICAgICAgcHJpbnRmX3VuZmlsdGVyZWQgKF8oIltUaHJlYWQgIyVkLCAlcyBl eGl0ZWRdXG4iKSwKKwkJCQkJIHBpZF90b190aHJlYWRfaWQgKHJldHZhbCks CiAJCQkJCSB0YXJnZXRfcGlkX3RvX3N0ciAocmV0dmFsKSk7CiAJCSAgICBk ZWxldGVfdGhyZWFkIChyZXR2YWwpOwogCQkgICAgc3RhdHVzLT5raW5kID0g VEFSR0VUX1dBSVRLSU5EX1NQVVJJT1VTOwpJbmRleDogdGhyZWFkLmMKPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9zcmMvc3JjL2dk Yi90aHJlYWQuYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xMDkKZGlmZiAt dSAtcCAtdSAtcCAtcjEuMTA5IHRocmVhZC5jCi0tLSB0aHJlYWQuYwkzMSBN YXIgMjAwOSAxNToyMzo1NyAtMDAwMAkxLjEwOQorKysgdGhyZWFkLmMJNSBB cHIgMjAwOSAyMDoxMzoyNSAtMDAwMApAQCAtMjExLDcgKzIxMSw4IEBAIGFk ZF90aHJlYWRfd2l0aF9pbmZvIChwdGlkX3QgcHRpZCwgc3RydWMKICAgcmVz dWx0LT5wcml2YXRlID0gcHJpdmF0ZTsKIAogICBpZiAocHJpbnRfdGhyZWFk X2V2ZW50cykKLSAgICBwcmludGZfdW5maWx0ZXJlZCAoXygiW05ldyAlc11c biIpLCB0YXJnZXRfcGlkX3RvX3N0ciAocHRpZCkpOworICAgIHByaW50Zl91 bmZpbHRlcmVkIChfKCJbTmV3IHRocmVhZCAjJWQsICVzXVxuIiksCisJCSAg ICAgICByZXN1bHQtPm51bSwgdGFyZ2V0X3BpZF90b19zdHIgKHB0aWQpKTsK IAogICBhbm5vdGF0ZV9uZXdfdGhyZWFkICgpOwogICByZXR1cm4gcmVzdWx0 Owo= --000e0cd1754831ee490466d4bbf1--