This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: cleanup mi error message handling


 > The only thing from you I can find is:
 > 
 >   At other times duplicated error messages are desirable, e.g.,
 > 
 >   -exec-continue 
 >   ^running
 >   (gdb) 
 >   &"The program is not being run.\n"
 >   ^error,msg="The program is not being run."
 > 
 >   because the first goes to the console for the user to see, the second to
 >   the frontend to be handled as appropriate.
 > 
 > You still did not say why showing the error message is console is desirable.
 > If -exec-continue itself is now show in the console, the error message
 > makes no sense. If -exec-continue is shown, then the error message is not
 > necessary. Where the flaw in this logic.

I can't understand these sentences.  The command -exec-continue won't appear in
the console but "The program is not being run." will.  These `errors' and other
similar ones like "No stack." are reported through error () and are normal Gdb
output for the user to see.  Currently the console can display such messages by
reading LOG-STREAM-OUTPUT.

Other errors like:

(gdb) 
-interpreter-exec
^error,msg="mi_cmd_interpreter_exec: Usage: -interpreter-exec interp command"
(gdb)

would be due to a frontend error, so I think it would be probably be best to
display them elsewhare, e.g., status bar.

The only way for the frontend to distinguish between the two types of error is
if the Gdb developer uses the appropriate mechanism, i.e. error () or
mi_error_message in each case.

I wouldn't make any changes until a real problem is reported (not just Pedro
tidying things up).  If a change has to be made I would suggest the one below.
However this would mean going through all the errors reported in MI to work out
which ones need mi_error_message but currently use error (), e.g.,
"mi_cmd_stack_list_locals: Usage: PRINT_VALUES".

 > > 
 > >  >            And if we enable logging of MI commands, user can see the
 > >  > information even if nothing goes to "&" channel.
 > > 
 > > And nothing goes to the console.  Same old story.
 > 
 > Sorry, I don't understand what is "old story" and why nothing goes to
 > console.

Right from when I started and there was an attempt to remove annotations,
it feels like the console has been under threat.

-- 
Nick                                           http://www.inet.net.nz/~nickrob


*** mi-main.c	31 Mar 2008 12:08:10 +1200	1.110
--- mi-main.c	31 Mar 2008 12:16:01 +1200	
*************** mi_execute_command (char *cmd, int from_
*** 1260,1278 ****
  	  mi_parse_free (command);
  	  return;
  	}
!       if (result.reason < 0)
! 	{
! 	  /* The command execution failed and error() was called
! 	     somewhere.  */
! 	  fputs_unfiltered (command->token, raw_stdout);
! 	  fputs_unfiltered ("^error,msg=\"", raw_stdout);
! 	  if (result.message == NULL)
! 	    fputs_unfiltered ("unknown error", raw_stdout);
! 	  else
! 	      fputstr_unfiltered (result.message, '"', raw_stdout);
! 	  fputs_unfiltered ("\"\n", raw_stdout);
! 	  mi_out_rewind (uiout);
! 	}
        mi_parse_free (command);
      }
  
--- 1260,1266 ----
  	  mi_parse_free (command);
  	  return;
  	}
! 
        mi_parse_free (command);
      }
  


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]