[gdb/tui] Show regs when switching to regs layout

When starting gdb in CLI mode, running to main and switching into the TUI regs
layout:
...
$ gdb -q a.out -ex start -ex "layout regs"
...
we get:
...
+---------------------------------+
|                                 |
| [ Register Values Unavailable ] |
|                                 |
+---------------------------------+
...

Fix this by handling this case in tui_data_window::rerender.

Tested on x86_64-linux.

Approved-By: Tom Tromey <tom@tromey.com>

PR tui/28600
Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=28600
This commit is contained in:
Tom de Vries
2023-12-16 09:31:29 +01:00
parent bebb0dd44b
commit 86a6f9a9fb
3 changed files with 22 additions and 8 deletions

View File

@@ -41,10 +41,12 @@ Term::command "layout regs"
Term::check_box "register box" 0 0 80 8
Term::check_box "source box in regs layout" 0 7 80 8
set text [Term::get_line 1]
# Just check for any register window content at all.
Term::check_contents "any register contents" "\\|.*\[^ \].*\\|"
# The current frame is main, check that registers are available.
set re_reg_vals_unavailable \
[string_to_regexp {[ Register Values Unavailable ]}]
gdb_assert \
{ ![Term::check_region_contents_p 0 0 80 8 $re_reg_vals_unavailable] } \
"Register values available"
# Check that we can successfully cause the register window to appear
# using the 'tui reg next' and 'tui reg prev' commands.

View File

@@ -192,7 +192,7 @@ tui_data_window::show_registers (const reggroup *group)
m_regs_content.clear ();
}
rerender ();
rerender (false);
}
@@ -415,10 +415,18 @@ tui_data_window::erase_data_content (const char *prompt)
/* See tui-regs.h. */
void
tui_data_window::rerender ()
tui_data_window::rerender (bool toplevel)
{
if (m_regs_content.empty ())
erase_data_content (_("[ Register Values Unavailable ]"));
{
if (toplevel && has_stack_frames ())
{
frame_info_ptr fi = get_selected_frame (NULL);
check_register_values (fi);
}
else
erase_data_content (_("[ Register Values Unavailable ]"));
}
else
{
erase_data_content (NULL);

View File

@@ -75,7 +75,11 @@ protected:
{
}
void rerender () override;
void rerender (bool toplevel);
void rerender () override
{
rerender (true);
}
private: