aboutsummaryrefslogtreecommitdiff
path: root/gdb/amd64-linux-tdep.c
diff options
context:
space:
mode:
authorPedro Alves <palves@redhat.com>2018-06-29 20:45:35 +0100
committerPedro Alves <palves@redhat.com>2018-06-29 20:47:15 +0100
commit75acb4867dc8bdd701983af6899d823c9e2e53a4 (patch)
tree416a0ad8ddadaaf8f66eb8654d557b05ce2d95ee /gdb/amd64-linux-tdep.c
parentc76a8ea36c9567b2b194285ceeae29bbfc26b20a (diff)
downloadfsf-binutils-gdb-75acb4867dc8bdd701983af6899d823c9e2e53a4.zip
fsf-binutils-gdb-75acb4867dc8bdd701983af6899d823c9e2e53a4.tar.gz
fsf-binutils-gdb-75acb4867dc8bdd701983af6899d823c9e2e53a4.tar.bz2
Improve alignment of "info threads" output, align "Target Id" column
It's long annoyed me that "info threads"'s columns are misaligned. Particularly the "Target Id" column's content is usually longer than the specified column width, so the table ends up with the "Frame" column misaligned. For example, currently we get this: (gdb) info threads Id Target Id Frame 1 Thread 0x7ffff7fb5740 (LWP 9056) "threads" 0x00007ffff7bc28ad in __pthread_join (threadid=140737345763072, thread_return=0x7fffffffd3e8) at pthread_join.c:90 2 Thread 0x7ffff7803700 (LWP 9060) "function0" thread_function0 (arg=0x0) at threads.c:90 * 3 Thread 0x7ffff7002700 (LWP 9061) "threads" thread_function1 (arg=0x1) at threads.c:106 The fact that the "Frame" heading is in a weird spot is particularly annoying. This commit turns the above into into this: (gdb) info threads Id Target Id Frame 1 Thread 0x7ffff7fb5740 (LWP 7548) "threads" 0x00007ffff7bc28ad in __pthread_join (threadid=140737345763072, thread_return=0x7fffffffd3e8) at pthread_join.c:90 2 Thread 0x7ffff7803700 (LWP 7555) "function0" thread_function0 (arg=0x0) at threads.c:91 * 3 Thread 0x7ffff7002700 (LWP 7557) "threads" thread_function1 (arg=0x1) at threads.c:104 It does that by computing the max width of the "Target Id" column and using that as column width when creating the table. This results in calling target_pid_to_str / target_extra_thread_info / target_thread_name twice for each thread, but I think that it doesn't matter in practice performance-wise, because the remote target caches the info, and with native targets it shouldn't be noticeable. It could matter if we have many threads (say, thousands), but then "info threads" is practically useless in such a scenario anyway -- better thread filtering and aggregation would be necessary. (Note: I have an old branch somewhere where I attempted at making gdb's "info threads"-like tables follow a model/view design, so that a general framework took care of issues like these, but it's incomplete and a much bigger change. This patch doesn't prevent going in that direction in the future, of course.) gdb/ChangeLog: 2018-06-29 Pedro Alves <palves@redhat.com> * thread.c (thread_target_id_str): New, factored out from ... (print_thread_info_1): ... here. Use it to compute the max "Target Id" column width. gdb/testsuite/ChangeLog: 2018-06-29 Pedro Alves <palves@redhat.com> * gdb.threads/names.exp: Adjust expected "info threads" output.
Diffstat (limited to 'gdb/amd64-linux-tdep.c')
0 files changed, 0 insertions, 0 deletions