emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Patch: debug-instrumented predicate


From: Stefan Monnier
Subject: Re: Patch: debug-instrumented predicate
Date: Mon, 04 Oct 2021 18:14:51 -0400
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux)

Arthur Miller [2021-10-04 23:58:26] wrote:
> Stefan Monnier <monnier@iro.umontreal.ca> writes:
>>> Concrete use-case would be to offer a user some kind of gui to instrument 
>>> or remove
>>> instrumentation for debug/edebug/profile/trace.
>>
>> W.r.t *removal* of debug/profile/trace, this could be done by offering
>> a generic removal GUI for advice.
>
> Njah, advice already has add/remove which can be connected to a gui button or
> what not. However any generic interface always need a specialisation for a 
> case
> at hand anyway, at least a different label on a button. But we are drifting
> away.

I don't think it's drifting: I'm suggesting that we try to add support
for it in a way that supports them all at the same time.

> I ask/suggest for an API to discover if instrumentation is installed or not.

And I'm suggesting that make `advice-member-p` should be the way to do that.
Currently this requires reliance on some internal knowledge of the
advice's name, but we could fix it by making this name public&stable.

> The only one that truly is missing a mean to test for on/off state is edebug.

Indeed.  I haven't looked at whether it could be made to use
`advice-add` so that `advice-member-p` could be used as well.
There's a good chance that it's not really an option (I mean
technically, I'm pretty sure it could be done, but I suspect it will
come with enough downsides that it's not worth it).

Until it can be made to use `advice-member-p` we should indeed export
a public way to test whether a function is instrumented by Edebug.

> I don't know which one is more efficient, but I don't like neither of those 
> two,
> I don't think any of suggested solutions is efficient. Also they both rely on
> internal state that can change whenever.

As long as these functions are defined in `edebug.el` it's OK if they
rely on internal state.

> When a function is instrumented for edebug, edebug adds some properties into
> symbols property list. However when instrumentation is removed, edebug leaves
> those properties to scrap behind; that inclusive the position in buffer where 
> it
> was active. IMO it is a bug; it shouldn't leave scrap behind. It would also be
> trivial to check if a funciton is instrumented or not, if those properties 
> were
> removed when instrumentation is removed.
>
> Unless I misunderstand the purpose why properties are left behind after
> instrumentation is removed :).

I suspect they're not left behind for any good reason, and
the best way to find out is to remove them and see if someone screams.


        Stefan




reply via email to

[Prev in Thread] Current Thread [Next in Thread]