public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
* [RFA 0/8] Implement 'frame apply COMMAND', enhance 'thread apply COMMAND'
@ 2018-05-21 11:07 Philippe Waroquiers
  2018-05-21 11:07 ` [RFA 5/8] Announce in NEWS 'frame apply', faas, taas, tfaas commands and -FLAGS... arg for thread apply Philippe Waroquiers
                   ` (9 more replies)
  0 siblings, 10 replies; 17+ messages in thread
From: Philippe Waroquiers @ 2018-05-21 11:07 UTC (permalink / raw)
  To: gdb-patches

Implement 'frame apply COMMAND', enhance 'thread apply COMMAND'

Compared to RFC, this handles all comments received from Eli and Simon,
and completes the changes so that it is (should be) ready for RFA.

This patch series :
 * implements a new command
     'frame apply [all | COUNT | -COUNT] [-FLAGS...] COMMAND'.
 * enhance 'thread apply COMMAND' by adding a -FLAGS argument
 * adds some shortcuts commands
 * documents the above in gdb.texinfo and NEWS.
 * adds a unit test for cli-utils.c
 * adds test for 'frame apply'
 * modify gdb.threads/pthreads.exp to test 'thread apply' -FLAGS argument

Th new command 'frame apply' allows to apply a COMMAND to a number of frames,
or to all frames.
The optional -FLAGS... argument allows to control what output to produce
and how to handle errors raised when applying COMMAND to a frame.

Some examples usages for this new command:
   frame apply all info frame
      Produce info frame for all frames
   frame apply all p $sp
      For each frame, print the location, followed by the frame sp
   frame apply all -qq p $sp
      Same as before, but -qq flags (q = quiet) indicate to only print
      the frames sp.
   frame apply all -vv p $sp
      Same as before, but -vv flags (v = verbose) indicate to print
      location and source line for each frame.
   frame apply all p some_local_var_somewhere
      Print some_local_var_somewhere in all frames. 'frame apply'
      will abort as soon as the print command fails.
   frame apply all -c p some_local_var_somewhere
      Same as before, but -c flag (c = continue) means to
      print the error and continue applying command in case the
      print command fails.
   frame apply all -s p some_local_var_somewhere
      Same as before, but -s flag (s = silent) means to
      be silent for frames where the print command fails.
      In other words, this allows to 'search' the frame in which
      some_local_var_somewhere can be printed.

'thread apply' command has been enhanced to also accepts a -FLAGS...
argument.

Some examples usages for this new argument:
   thread apply all -s frame apply all -s p some_local_var_somewhere
      Prints the thread id, frame location and some_local_var_somewhere
      value in frames of threads that have such local var.

To make the life of the user easier, the most typical use cases
have shortcuts :
   faas  : shortcut for 'frame apply all -s'
   taas  : shortcut for 'thread apply all -s'
   tfaas : shortcut for 'thread apply all -s frame apply all -s"

An example usage :
   tfaas p some_local_var_somewhere
     same as the longer:
        'thread apply all -s frame apply all -s p some_local_var_somewhere'

gdb/ChangeLog
2018-05-21  Philippe Waroquiers  <philippe.waroquiers@skynet.be>

	* Makefile.in (SUBDIR_UNITTESTS_SRCS): Add
	unittests/cli-utils-selftests.c
	* NEWS: Mention new commands. Mention change to 'thread apply'.
	* cli-utils.c (number_or_range_parser::get_number): Only handle
	numbers or convenience var as numbers.
	(check_for_flags): New function.
	(check_for_flags_vqcs): New function.
	* cli-utils.h (check_for_flags): New function.
	(check_for_flags_vqcs): New function.
	* stack.c: (trailing_outermost_frame): New function, mostly
	extracted from backtrace_command_1.
	(backtrace_command_1): Update to call trailing_outermost_frame.
	(frame_apply_command_count): New function.
	(frame_apply_all_command): New function.
	(frame_apply_command): New function.
	(faas_command): New function.
	(frame_cmd_list): New variable.
	(_initialize_stack): Update to setup the new commands 'frame apply'
	and 'faas'.
	* thread.c (thr_try_catch_cmd): New function.
	(thread_apply_all_command): Handle vqcs flags.
	(thread_apply_command): Handle vqcs flags.
	(taas_command): New function.
	(tfaas_command): New function.
	(_initialize_thread): Update to setup the new commands 'taas
	and 'tfaas'. Change doc string for 'thread apply'.
	* unittests/cli-utils-selftests.c: New file.

gdb/testsuite/ChangeLog
2018-05-21  Philippe Waroquiers  <philippe.waroquiers@skynet.be>

	* gdb.base/frameapply.c: New file.
	* gdb.base/frameapply.exp: New file.
	* gdb.threads/pthreads/exp: Test vqcs FLAGS.

gdb/doc/ChangeLog
2018-05-21  Philippe Waroquiers  <philippe.waroquiers@skynet.be>

	* gdb.texinfo (Debugging Programs with Multiple Threads):
	Document changes to 'thread apply'. Document 'taas'.
	Document 'tfaas'.
	(Examining the Stack): Document 'frame apply'. Document 'faas'.

^ permalink raw reply	[flat|nested] 17+ messages in thread

end of thread, other threads:[~2018-06-05 16:49 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-05-21 11:07 [RFA 0/8] Implement 'frame apply COMMAND', enhance 'thread apply COMMAND' Philippe Waroquiers
2018-05-21 11:07 ` [RFA 5/8] Announce in NEWS 'frame apply', faas, taas, tfaas commands and -FLAGS... arg for thread apply Philippe Waroquiers
2018-05-21 16:26   ` Eli Zaretskii
2018-05-21 11:07 ` [RFA 3/8] Add -FLAGS... argument to 'thread apply' Philippe Waroquiers
2018-05-21 11:07 ` [RFA 7/8] Modify gdb.threads/threads.exp to test FLAGS vqcs for thread apply Philippe Waroquiers
2018-05-21 11:07 ` [RFA 1/8] Add helper functions check_for_flags and check_for_flags_vqcs Philippe Waroquiers
2018-05-21 11:07 ` [RFA 4/8] Documentation changes for 'frame apply' and 'thread apply' Philippe Waroquiers
2018-05-21 16:23   ` Eli Zaretskii
2018-05-21 11:07 ` [RFA 8/8] Add a self-test for cli-utils.c Philippe Waroquiers
2018-05-21 11:54 ` [RFA 6/8] Add a test for 'frame apply' Philippe Waroquiers
2018-05-21 12:16 ` [RFA 2/8] Implement frame apply [all | COUNT | -COUNT] [-FLAGS...] COMMAND Philippe Waroquiers
2018-05-28 22:18 ` [PING] [RFA 0/8] Implement 'frame apply COMMAND', enhance 'thread apply COMMAND' Philippe Waroquiers
2018-06-01 14:32 ` Pedro Alves
2018-06-01 19:38   ` Philippe Waroquiers
2018-06-04 16:46     ` Pedro Alves
2018-06-04 20:56       ` Philippe Waroquiers
2018-06-05 16:49         ` Pedro Alves

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).