public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
From: Hannes Domani <ssbssa@yahoo.de>
To: gdb-patches@sourceware.org
Subject: [RFC] TUI windows for locals/display/threads/frames/memory
Date: Sat,  6 Mar 2021 18:33:55 +0100	[thread overview]
Message-ID: <20210306173417.21528-1-ssbssa@yahoo.de> (raw)
In-Reply-To: <20210306173417.21528-1-ssbssa.ref@yahoo.de>

This series adds rudimentary mouse support and uses the python TUI window API
to create these windows:
- locals
  Shows the values of the local variables.
- display
  Shows the values of the automatic display variables.
- threads
  Shows the currently known threads.
- frames
  Shows all stack frames of the current thread.
- memory
  Shows the hexadecimal values of some memory, the start address is
  set with the new 'memory' command.

In the variable windows, a left click shows the children of the value on
the clicked line.
A right click on a value with address sets a convenience variable
with the pointer to this value (either $dv (display variable) or
$lv (local variable)).
And a middle click copies the text representation of the value to the
clipboard.

A left click on the threads/frames window selects this thread/frame.

It's also possible to create custom windows with the output of a gdb
command, e.g.:
(gdb) cccw shared-libs "info sharedlibrary"
This creates a window named "shared-libs", and shows the output of
"info sharedlibrary".

This also creates a few TUI layouts, and short aliases for them, e.g.:
(gdb) lldf
This opens the layout locals-display-frames.

Patch 20 changes the pretty printers in gdb-gdb.py to use children()
instead of to_string() for the output of their childs, so they can be
expanded in the variable windows.


This series still needs a lot of cleanup, in particular:
- Add comments.
- Refactor/rewrite VariableWindow::add_val().
- The display window uses the 'info display' output, since there is no
  python API to access the automatic display variables.
- Patches 14/16/18 may be counted as ugly hacks.

Knowing that I still would like some feedback on its current state.


[PATCH 01/22] Initial TUI mouse support
[PATCH 02/22] Create/disable/enable/delete breakpoints in TUI with
[PATCH 03/22] Forward mouse click to python TUI window
[PATCH 04/22] Prevent flickering when redrawing the TUI python window
[PATCH 05/22] Implement locals TUI window
[PATCH 06/22] Implement display TUI window
[PATCH 07/22] Implement threads TUI window
[PATCH 08/22] Implement frames TUI window
[PATCH 09/22] Implement cccw TUI command
[PATCH 10/22] Add optional styled argument to gdb.execute
[PATCH 11/22] Use styled argument of gdb.execute() for cccw command
[PATCH 12/22] Add optional full_window argument to TuiWindow.write
[PATCH 13/22] Use the full_window argument of TuiWindow.write to
[PATCH 14/22] Add set_tui_auto_display python function
[PATCH 15/22] Disable automatic display while the display window is
[PATCH 16/22] Show raw flag in info display
[PATCH 17/22] Use the raw flag of automatic display to disable pretty
[PATCH 18/22] Update the source location with Frame.select
[PATCH 19/22] Refresh the TUI source window when changing the frame
[PATCH 20/22] Use method children instead of to_string in pretty
[PATCH 21/22] Implement memory TUI window
[PATCH 22/22] Copy variable value to clipboard on middle-click


       reply	other threads:[~2021-03-06 17:35 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20210306173417.21528-1-ssbssa.ref@yahoo.de>
2021-03-06 17:33 ` Hannes Domani [this message]
2021-03-06 17:33   ` [PATCH 01/22] Initial TUI mouse support Hannes Domani
2021-03-11 17:32     ` Tom Tromey
2021-03-11 17:48       ` Hannes Domani
2021-03-12 16:35         ` Tom Tromey
2021-03-12 16:43           ` Hannes Domani
2021-03-12 17:02             ` Tom Tromey
2021-03-06 17:33   ` [PATCH 02/22] Create/disable/enable/delete breakpoints in TUI with mouse Hannes Domani
2021-03-08  9:32     ` Andrew Burgess
2021-03-08 12:00       ` Hannes Domani
2021-03-11 21:17         ` Tom Tromey
2021-03-11 21:16     ` Tom Tromey
2021-03-06 17:33   ` [PATCH 03/22] Forward mouse click to python TUI window Hannes Domani
2021-03-06 18:09     ` Eli Zaretskii
2021-03-08  9:36     ` Andrew Burgess
2021-03-11 21:19       ` Tom Tromey
2021-03-11 21:20     ` Tom Tromey
2021-03-06 17:33   ` [PATCH 04/22] Prevent flickering when redrawing the TUI python window Hannes Domani
2021-03-11 21:21     ` Tom Tromey
2021-03-06 17:34   ` [PATCH 05/22] Implement locals TUI window Hannes Domani
2021-03-08  9:51     ` Andrew Burgess
2021-03-11 21:26       ` Tom Tromey
2021-03-11 21:33     ` Tom Tromey
2021-03-11 22:00     ` Tom Tromey
2021-03-06 17:34   ` [PATCH 06/22] Implement display " Hannes Domani
2021-03-11 21:37     ` Tom Tromey
2021-03-06 17:34   ` [PATCH 07/22] Implement threads " Hannes Domani
2021-03-06 17:34   ` [PATCH 08/22] Implement frames " Hannes Domani
2021-03-11 21:40     ` Tom Tromey
2021-03-11 21:50       ` Hannes Domani
2021-03-06 17:34   ` [PATCH 09/22] Implement cccw TUI command Hannes Domani
2021-03-08 10:24     ` Christian Biesinger
2021-03-11 21:42       ` Tom Tromey
2021-03-11 21:57   ` [RFC] TUI windows for locals/display/threads/frames/memory Tom Tromey

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210306173417.21528-1-ssbssa@yahoo.de \
    --to=ssbssa@yahoo.de \
    --cc=gdb-patches@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).