Subject: bug#1155: 23.0.60; GUD hangs

From: Guillaume Salagnac <[email-masked]>
Date: Tue, 14 Oct 2008 19:06:52 +1000

Note: it's been a long time between the moment I started writing this 
e-mail, and the moment I finished it, so please bear with me until the end.

Nick Roberts wrote:
>  > I try to debug a program with M-x gdb, like I did in the past, but it
>  > does not seem to work in recent emacsen. gdb starts (in a *gud*
>  > buffer) but does not respond to commands. Even a simple "help" does
>  > not suceed.
>  > 
>  > Maybe I am doing something wrong (then please correct me), but it does
>  > work fine in emacs 21. I experienced the same behaviour here in an emacs
>  > 23.0.60.1 and 22.1.1 (all three versions as shipped in ubuntu hardy)
>
> M-x gdb works differently in Emacs 21, but similarly in Emacs 22.1 and
> Emacs 23.0.60.  Emacs 22.1 has been included with many distributions including
> Ubuntu Hardy and there have been few bug reports, so I suspect it has something
> to do with your set up.
>
>   
Hi,

the behaviour I describe is of course when starting emacs with -Q ; 
therefore, I do not suspect my (emacs) setup. For the external setup, I 
would be glad to verify it, if you could indicate me any pitfalls. As 
long as emacs finds gdb, I thought it should be fine.

BTW, and this drives me crazy, sometimes-it-work-and-sometimes-it-doesnt 
(tm). My suspicion is that the problem perhaps comes from the way emacs 
communicate with gdb : what if there are different instances of gdb 
running at the same time on the machine ? what if there are other 
emacsen ? what if those emacsen also happen to run gdbs ? Anyway, when 
it does not what I want, I switch to emacs 21, and this one works. 
Still, it is not satisfying :-)

> Have you read the node in the Emacs manual about bug reporting?
>   
Yes.

> In particular what happens if you don't load your .emacs, i.e., start Emacs
> with "-q"?
>   
exactly the same ; actually, this is the first thing it tried (but with -Q)
> What version of GDB are you using?
>
>   
GNU gdb 6.8-debian (the one by default in ubuntu hardy)

>  > BTW, this is my first bug report, but it is my second try :
>  >  M-x bug-report seems to be address messages by default to
>  > [email-masked] that goes nowhere. But maybe I am perhaps
>  > doing something wrong.
>
> [email-masked] is an active mailing list and the right one for
> reporting bugs in Emacs 23.0.60.  Maybe there is something wrong with your
> mail server.
>   
I don't know: on http://ists.gnu.org/archive/html/emacs-pretest-bug , 
the last message is from july 2007, saying that the list is 
discontinued. But maybe I missed something.

>  > ...
>  > Recent input:
>  > M-x g d b <return> <backspace> <backspace> <backspace>
>  > <backspace> <backspace> <backspace> <backspace> <backspace>
>  > <backspace> <backspace> <backspace> <backspace> <backspace>
>  > <backspace> <return> h e l p <return> C-c C-c M-x r
>  > e p o r t - e m a c s - b u g <return>
>
> What text do you have in the mini-buffer when you type <return> for the
> second time?
>   
When I type "M-x gdb", the text by default in the minibuffer is  "Run 
gdb (like this): gdb --annotate=3 foo", where "foo" is a random 
executable file in my home directory. All the <backspace>s are to remove 
everything up to just "gdb" (the second one of course ; I do not modify 
the prompt)

But hey ! that does seem to make a difference. In my home directory, I 
start emacs 23 with -Q and I type M-x gdb. The text by default is "gdb 
--annotate=3 .zshrc". If I just press return, I can ask for "help" and 
get gdb help. If I remove everything but "gdb", so as to choose my 
"file" and my "set args" later, it does not work.

Hoho (typing as I'm reading the web) : the online documentation of gdb 
(not the man page, not the info page, not the gdb --help) mention this 
option, and says :

http://sourceware.org/gdb/current/onlinedocs/gdb_3.html#IDX37

|-annotate level|
    This option sets the /annotation level/ inside GDB. Its effect is
    identical to using `set annotate level' (see section 25. GDB
    Annotations
    <http://sourceware.org/gdb/current/onlinedocs/gdb_26.html#SEC656>).
    The annotation level controls how much information GDB prints
    together with its prompt, values of expressions, source lines, and
    other types of output. Level 0 is the normal, level 1 is for use
    when GDB is run as a subprocess of GNU Emacs, level 3 is the maximum
    annotation suitable for programs that control GDB, and level 2 has
    been deprecated. 

Having played now a little bit with this option, I disagree with this 
documentation. level 1 and level 2 do not make my emacs happy, and GDB 
is still irresponsive. However, the solution to my problem seems to be 
this "annotation level 3" thing.

Now remains the questions as to why it does work like a charm in emacs 
21 without this option, and also why the necessity of this option for 
gud is documented nowhere (if I, the end user, am not allowed to remove 
this option from the command line without breaking GUD, either I should 
not be allowed to remove it, or at least I should be warned.)

But yes, for the moment I am back in emacs 23 for my debugging activites.

 yay !

Thanks again,
-G