Add options to skip unavailable locals

Programming / Debugging / GDB - qiyao [iyao] - 27 August 2013 00:20 UTC

This is the patch to add new option '--skip-unavailable' to MI commands '-stack-list-{locals, arguments, variables}'. This patch extends list_args_or_locals to add a new parameter 'skip_unavailable', and don't list locals or arguments if values are unavailable and 'skip_unavailable' is true.

This is inspecting a trace frame (tfind mode), where only a few locals have been collected.

-stack-list-locals, no switch vs new switch:

-stack-list-locals --simple-values ^done,locals=[{name="array",type="unsigned char [2]"},{name="i",type="int",value=""}]-stack-list-locals --skip-unavailable --simple-values ^done,locals=[{name="array",type="unsigned char [2]"}]

-stack-list-arguments, no switch vs new switch:

-stack-list-arguments --simple-values ^done,stack-args=[frame={level="0",args=[{name="j",type="int",value="4"},{name="s",type="char *",value=""}]},frame={level="1",args=[]}]-stack-list-arguments --skip-unavailable --simple-values ^done,stack-args=[frame={level="0",args=[{name="j",type="int",value="4"}]},frame={level="1",args=[]}]

-stack-list-variables, no switch vs new switch:

-stack-list-variables --simple-values ^done,variables=[{name="j",arg="1",type="int",value="4"},{name="s",arg="1",type="char *",value=""},{name="array",type="unsigned char [2]"},{name="i",type="int",value=""}]-stack-list-variables --skip-unavailable --simple-values ^done,variables=[{name="j",arg="1",type="int",value="4"},{name="array",type="unsigned char [2]"}]

tests are added to test these new options.

gdb:

2013-08-27 Pedro Alves Yao Qi

- mi/mi-cmd-stack.c (list_args_or_locals): Adjust prototype. (parse_no_frames_option): Remove. (mi_cmd_stack_list_locals): Handle --skip-unavailable. (mi_cmd_stack_list_args): Adjust. (mi_cmd_stack_list_variables): Handle --skip-unavailable. (list_arg_or_local): Add new parameter 'skip_unavailable'. Return early if SKIP_UNAVAILABLE is true and ARG->val is unavailable. Caller update. (list_args_or_locals): New parameter 'skip_unavailable'. Handle it.
- valprint.c (scalar_type_p): Rename to ... (val_print_scalar_type_p): ... this. Make extern. (val_print, value_check_printable): Adjust.
- valprint.h (val_print_scalar_type_p): Declare.
- value.c (value_entirely_unavailable): New function.
- value.h (value_entirely_unavailable): Declare.

- NEWS: Mention the new option "--skip-unavailable" to MI commands '-stack-list-locals', '-stack-list-arguments' and '-stack-list-variables'.

gdb/doc:

2013-08-27 Pedro Alves Yao Qi

- gdb.texinfo (GDB/MI Stack Manipulation) <-stack-list-locals>: Document new --skip-unavailable option. <-stack-list-variables>: Document new --skip-unavailable option.

gdb/testsuite:

2013-08-27 Yao Qi

- gdb.trace/entry-values.exp: Test unavailable entry value is not shown when option '--skip-unavailable' is specified.
- gdb.trace/mi-trace-unavailable.exp (test_trace_unavailable): Add tests for new option '--skip-unavailable'.

6c91253 Add options to skip unavailable locals
gdb/ChangeLog | 24 +++++++
gdb/NEWS | 4 ++
gdb/doc/ChangeLog | 7 ++
gdb/doc/gdb.texinfo | 17 ++++-
gdb/mi/mi-cmd-stack.c | 77 ++++++++++++++++------
gdb/testsuite/ChangeLog | 7 ++
gdb/testsuite/gdb.trace/entry-values.exp | 5 ++
gdb/testsuite/gdb.trace/mi-trace-unavailable.exp | 9 +++
gdb/valprint.c | 8 +--
gdb/valprint.h | 2 +
gdb/value.c | 20 ++++++
gdb/value.h | 4 ++
12 files changed, 157 insertions(+), 27 deletions(-)

Upstream: sourceware.org


  • Share