unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* The new "pp" command in gud is no longer so dangerous...
@ 2005-11-09 23:33 Kim F. Storm
  2005-11-10  1:03 ` Nick Roberts
  2005-11-10  5:44 ` Richard M. Stallman
  0 siblings, 2 replies; 6+ messages in thread
From: Kim F. Storm @ 2005-11-09 23:33 UTC (permalink / raw)



I have installed changes to make a new safe_debug_print function which
does not crash the inferior emacs process if you pass something which
is not a valid Lisp Object (that's pretty easy if you click on the
pp toolbar button with the cursor placed on something which is not
a Lisp_Object variable.

There is now a new function valid_lisp_object_p that checks this.
Unfortunately, I only know how to make it work if GC_MARK_STACK != 0.
So it simply returns "undeterminable" if GC_MARK_STACK == 0, and
consequently safe_debug_print refuses to print any values.
If anybody has ideas how to improve this, pls. tell me (or fix it).

Also, I have added new commands to print the value of lisp variables,
e.g.
        pv debug-on-error

There is also a command pv1 which could be used as the command
to execute when user presses the "pp" toolbar button over a symbol
in a *.el file.  Someone wants to work on that?

-- 
Kim F. Storm <storm@cua.dk> http://www.cua.dk

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

* The new "pp" command in gud is no longer so dangerous...
  2005-11-09 23:33 The new "pp" command in gud is no longer so dangerous Kim F. Storm
@ 2005-11-10  1:03 ` Nick Roberts
  2005-11-10 12:52   ` Kim F. Storm
  2005-11-10  5:44 ` Richard M. Stallman
  1 sibling, 1 reply; 6+ messages in thread
From: Nick Roberts @ 2005-11-10  1:03 UTC (permalink / raw)
  Cc: emacs-devel


...but living on the edge is half the fun!

 > Also, I have added new commands to print the value of lisp variables,
 > e.g.
 >         pv debug-on-error
 > 
 > There is also a command pv1 which could be used as the command
 > to execute when user presses the "pp" toolbar button over a symbol
 > in a *.el file.  Someone wants to work on that?

How would that work?  The variable tool-bar-map is set locally in
gud-minor-mode so, as soon as you place the cursor in a buffer where
gud-minor-mode is nil e.g on an expression in a lisp file, the tool bar
reverts to the global one.

I could define it using gud-def so that it has a global binding e.g.

  (gud-def gud-pv "pv1 %e" "\C-v" "Print the value of the lisp variable.")

so that it's on C-x C-a C-v.  Is that any good?

Nick

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

* Re: The new "pp" command in gud is no longer so dangerous...
  2005-11-09 23:33 The new "pp" command in gud is no longer so dangerous Kim F. Storm
  2005-11-10  1:03 ` Nick Roberts
@ 2005-11-10  5:44 ` Richard M. Stallman
  2005-11-10  8:36   ` Kim F. Storm
  1 sibling, 1 reply; 6+ messages in thread
From: Richard M. Stallman @ 2005-11-10  5:44 UTC (permalink / raw)
  Cc: emacs-devel

    There is now a new function valid_lisp_object_p that checks this.
    Unfortunately, I only know how to make it work if GC_MARK_STACK != 0.
    So it simply returns "undeterminable" if GC_MARK_STACK == 0, and
    consequently safe_debug_print refuses to print any values.
    If anybody has ideas how to improve this, pls. tell me (or fix it).

It would be better to handle that case by treating all values
as ok, rather than treating all values as bad.
At least that would work as well as the old code.

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

* Re: The new "pp" command in gud is no longer so dangerous...
  2005-11-10  5:44 ` Richard M. Stallman
@ 2005-11-10  8:36   ` Kim F. Storm
  2005-11-10 20:49     ` Richard M. Stallman
  0 siblings, 1 reply; 6+ messages in thread
From: Kim F. Storm @ 2005-11-10  8:36 UTC (permalink / raw)
  Cc: emacs-devel

"Richard M. Stallman" <rms@gnu.org> writes:

>     There is now a new function valid_lisp_object_p that checks this.
>     Unfortunately, I only know how to make it work if GC_MARK_STACK != 0.
>     So it simply returns "undeterminable" if GC_MARK_STACK == 0, and
>     consequently safe_debug_print refuses to print any values.
>     If anybody has ideas how to improve this, pls. tell me (or fix it).
>
> It would be better to handle that case by treating all values
> as ok, rather than treating all values as bad.
> At least that would work as well as the old code.

Well, there is no "old code" in this case.

Nick just added the [pp] button to the tool-bar, and the first time
I tried it, the cursor as (accidentally) on a non-Lisp object, and I
crashed the inferior emacs without any warning.

I changed "pp" to call safe_debug_print as my experience shows that it
is also too easy to call it with non-Lisp objects.  

However, you can still use the good-ole "pr" command, as it calls the
old debug_print which will print whatever you pass it (or die trying).

-- 
Kim F. Storm <storm@cua.dk> http://www.cua.dk

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

* Re: The new "pp" command in gud is no longer so dangerous...
  2005-11-10  1:03 ` Nick Roberts
@ 2005-11-10 12:52   ` Kim F. Storm
  0 siblings, 0 replies; 6+ messages in thread
From: Kim F. Storm @ 2005-11-10 12:52 UTC (permalink / raw)
  Cc: emacs-devel

Nick Roberts <nickrob@snap.net.nz> writes:

>  > There is also a command pv1 which could be used as the command
>  > to execute when user presses the "pp" toolbar button over a symbol
>  > in a *.el file.  Someone wants to work on that?
>
> How would that work?

You are right, it can't.

> I could define it using gud-def so that it has a global binding e.g.
>   (gud-def gud-pv "pv1 %e" "\C-v" "Print the value of the lisp variable.")
> so that it's on C-x C-a C-v.  Is that any good?

Looks good to me!  Let's try it!

-- 
Kim F. Storm <storm@cua.dk> http://www.cua.dk

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

* Re: The new "pp" command in gud is no longer so dangerous...
  2005-11-10  8:36   ` Kim F. Storm
@ 2005-11-10 20:49     ` Richard M. Stallman
  0 siblings, 0 replies; 6+ messages in thread
From: Richard M. Stallman @ 2005-11-10 20:49 UTC (permalink / raw)
  Cc: emacs-devel

    > It would be better to handle that case by treating all values
    > as ok, rather than treating all values as bad.
    > At least that would work as well as the old code.

    Well, there is no "old code" in this case.

It is useless to have the button and make it do nothing.
Meanwhile, just testing for a valid data type ought to enable
it to avoid most crashes.  So wouldn't it be better, in the
case where you can't test the pointer's validity, to assume
"yes" instead of assume "no"?

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

end of thread, other threads:[~2005-11-10 20:49 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-11-09 23:33 The new "pp" command in gud is no longer so dangerous Kim F. Storm
2005-11-10  1:03 ` Nick Roberts
2005-11-10 12:52   ` Kim F. Storm
2005-11-10  5:44 ` Richard M. Stallman
2005-11-10  8:36   ` Kim F. Storm
2005-11-10 20:49     ` Richard M. Stallman

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

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