Subject: bug#5172 closed by Steve Revilak <[email-masked]> (23.1.90; DONE: M-x gdb no longer works in 23.1.90.1 under Mac OS X)

From: [email-masked] (Emacs bug Tracking System)
Date: Sat, 12 Dec 2009 04:15:07 +0000

This is an automatic notification regarding your bug report
which was filed against the emacs package:

#5172: 23.1.90; M-x gdb no longer works in 23.1.90.1 under Mac OS X

It has been closed by Steve Revilak <[email-masked]>.

Their explanation is attached below along with your original report.
If this explanation is unsatisfactory and you have not received a
better one in a separate message then please contact Steve Revilak <[email-masked]> by
replying to this email.

-- 
5172: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=5172
Emacs Bug Tracking System
Contact [email-masked] with problems

Subject: 23.1.90; DONE: M-x gdb no longer works in 23.1.90.1 under Mac OS X
From: Steve Revilak <[email-masked]>
To: [email-masked]
Date: Fri, 11 Dec 2009 23:08:32 -0500

I'm going to close this issue, and call it user error.

I was reading the NEWS file for emacs 23.1.90.1, and noticed the
following remark (around line 1559).

   *** The `gdb' command only works with the graphical interface now.
   Use `gud-gdb' if you want the (old) text command mode.

I missed this during my earlier read of NEWS.  When I used M-x gdb, I
was expecting emacs 23.1.90.1 to offer the same textual interface as
prior versions of emacs offered.  M-x gud-gdb does exactly this.

I simply needed to RTFMA -- "read the fine manual, again". :)

My apologies for the false alarm.

Subject: 23.1.90; M-x gdb no longer works in 23.1.90.1 under Mac OS X
From: Steve Revilak <[email-masked]>
To: [email-masked]
Date: Wed, 9 Dec 2009 17:10:23 -0500

Please write in English if possible, because the Emacs maintainers
usually do not have translators to read other languages for them.

Your bug report will be posted to the [email-masked] mailing list.

Please describe exactly what actions triggered the bug
and the precise symptoms of the bug.  If you can, give
a recipe starting from `emacs -Q':

I often use Emacs to debug C programs (via M-x gdb).  The typical
workflow is (1) start C program, (2) start gdb via M-x gdb, (3) attach
gdb to running C program, and (4) debug.  With emacs 23.1.90.1, I can
no longer do this.

To give steps to reproduce, it will be helpful to have a C program to
debug.  Here is a C program:

----------- begin demo.c -------------
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>

int main(void) {
   int counter = 0;
   pid_t pid = getpid();
   printf("pid=%d\n", (int) pid);
   while (1) {
     printf("%d\n", counter);
     sleep(1);
     counter++;
   }
   return 0;
}
----------- end demo.c -------------

STEPS TO REPRODUCE:
------------------

First, let me state my goal: I want to start "demo", attach a
debugger, "fin" a few times to get back to main, and then "next"
through one iteration of the while loop.

Below are the steps I took, and the responses I observed:

  (1) compile C program with the command-line
      gcc -g -o demo demo.c

  (2) Start Emacs as "Emacs -q".  Type C-x C-f ~/demo.c RET
      to open demo.c

  (3) from a shell prompt (outside of emacs), start "demo", like this

      $ ./demo 
      pid=19839
      0
      1
      2
      [... program continues ... ]

  (4) In emacs type M-x gdb
      Emacs offer the following in the minibuffer:
      Run gdb (like this): gdb -i=mi demo     

      Press RETURN to accept the gdb command line.

  (5) In the *gud-demo* buffer, emacs prints some preamble information,
      then a gdb prompt.  Normally the "(gdb)" prompt would appear in
      column zero.  Here, the "(gdb)" prompt appears around column 52.

  (6) Into the *gud-demo* buffer, I type "attach 19839 RETURN"

  (7) emacs responds with the following:
------------- begin reponse -------------------------
Attaching to program: `/Users/srevilak/demo', process 19839.
Reading symbols for shared libraries . done
0x90040df8 in mach_wait_until ()
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                (gdb) 
MI_HOOK_RESULT={HOOK_TYPE="breakpoint_delete",bkptno="-1"},MI_HOOK_RESULT={HOOK_TYPE="breakpoint_delete",bkptno="-2"},MI_HOOK_RESULT={HOOK_TYPE="breakpoint_delete",bkptno="-3"},MI_HOOK_RESULT={HOOK_TYPE="breakpoint_delete",bkptno="-4"},MI_HOOK_RESULT={HOOK_TYPE="breakpoint_delete",bkptno="-5"},MI_HOOK_RESULT={HOOK_TYPE="breakpoint_delete",bkptno="-6"},MI_HOOK_RESULT={HOOK_TYPE="breakpoint_delete",bkptno="-7"},MI_HOOK_RESULT={HOOK_TYPE="breakpoint_delete",bkptno="-8"},MI_HOOK_RESULT={HOOK_TYPE="frame_changed",frame="0"},MI_HOOK_RESULT={HOOK_TYPE="stack_changed"}
------------- end response --------------------------

  (8) I type "fin RETURN", then "fin RETURN" again (trying to get back
      up into main()).

      The response to these commands are slightly garbled.  The
      minibuffer shows the message `error in process filter: Bad JSON
      object: ":", 44',

  (9) Eventually, I get back up to main.  Emacs does not show the
      source code being debugged.

      I will attach the contents of the *gud-demo* buffer as file
      gud-23.1.90.1.txt.  In this file, note that some lines contain
      several hundred whitespace characters.

STEPS TO REPRODUCE, TAKE 2:
--------------------------

Prior versions of Emacs would offer the debugger command "gdb
--annotate=3" (as opposed to "gdb -i=mi").  I made another attempt
using "gdb --annotate=3 demo".

With "gdb --annotate=3 demo", gdb and Emacs seem to get stuck in some
sort of dialog where neither program understands what the other is
saying.  I'll attach the contents of this *gud-demo* buffer as the
file "gud-23.1.90.1-annotate.txt".

STEPS TO REPRODUCE, TAKE 3:
--------------------------

Next, I'll try to start demo from the debugger, rather than attaching
to a running process.  Here are the results of that attempt (again,
running "Emacs -q" with demo.c open).

  (1) type M-x gdb RET
  
  (2) Accept the gdb command "gdb -i=mi demo"

  (3) at the GDB prompt type "b main RET"

  (4) at the gdb prompt type "run RET"

The *gud-demo* window buffer seems to hang, with "Debugger: run
[initializing ...]" shown in the mode line.

Attached is a picture of the results: gud-23.1.90.1-b-main.png.

WHAT I EXPECTED TO HAPPEN:
-------------------------

Emacs 23.1.1 DOES NOT exhibit the behavior described above.  When
trying the "steps to reproduce" with emacs 23.1.1, I get the results
shown in "23.1.1.png" (attached), and the *gud-demo* buffer contents
shown in gud-23.1.1.txt (also attached).  These files illustrate the
results I'd expect to see.

REPRODUCIBILITY NOTES:
---------------------

Most of this writeup was done with

  * GNU Emacs 23.1.90.1 (powerpc-apple-darwin8.11.0, NS apple-appkit-824.48)
    running on Mac OS X 10.4.11 

  * GDB version
$ gdb --version
GNU gdb 6.3.50-20050815 (Apple version gdb-696) (Sat Oct 20 18:20:28 GMT 2007)
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "powerpc-apple-darwin".

  * GCC version
$ gcc --version
powerpc-apple-darwin8-gcc-4.0.1 (GCC) 4.0.1 (Apple Computer, Inc. build 5370)
Copyright (C) 2005 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

The behavior IS reproducible with emacs 

   GNU Emacs 23.1.50.1 (powerpc-apple-darwin8.11.0, NS apple-appkit-824.48)
   (also running on Mac OS X 10.4.11)

The behavior IS reproducible with emacs

   GNU Emacs 23.1.90.1 (i386-apple-darwin9.8.0, NS apple-appkit-949.54)
   running on Mac OS X 10.5.8

As noted above, the behavior is NOT reproducible with 

   GNU Emacs 23.1.1 (powerpc-apple-darwin8.11.0, NS apple-appkit-824.48)

It is also NOT reproducible with 

   GNU Emacs 22.3.1 (powerpc-apple-darwin8.11.0, Carbon Version 1.6.0)

If Emacs crashed, and you have the Emacs process in the gdb debugger,
please include the output from the following gdb commands:
     `bt full' and `xbacktrace'.
For information about debugging Emacs, please read the file
/Applications/Emacs.app/Contents/Resources/etc/DEBUG.

In GNU Emacs 23.1.90.1 (powerpc-apple-darwin8.11.0, NS apple-appkit-824.48)
  of 2009-12-09 on spud.local
Windowing system distributor `Apple', version 10.3.824
configured using `configure  '--with-ns''

Important settings:
   value of $LC_ALL: nil
   value of $LC_COLLATE: C
   value of $LC_CTYPE: nil
   value of $LC_MESSAGES: nil
   value of $LC_MONETARY: nil
   value of $LC_NUMERIC: nil
   value of $LC_TIME: nil
   value of $LANG: en_US.UTF-8
   value of $XMODIFIERS: nil
   locale-coding-system: utf-8-unix
   default enable-multibyte-characters: t

Major mode: Fundamental

Minor modes in effect:
   tooltip-mode: t
   mouse-wheel-mode: t
   menu-bar-mode: t
   file-name-shadow-mode: t
   global-font-lock-mode: t
   global-auto-composition-mode: t
   auto-encryption-mode: t
   auto-compression-mode: t
   line-number-mode: t
   transient-mark-mode: t

Recent input:
M-x r e p o r t - e m <tab> <return>

Recent messages:
For information about GNU Emacs and the GNU system, type C-h C-a.

Load-path shadows:
None found.

Features:
(shadow mail-extr message ecomplete rfc822 mml mml-sec password-cache
mm-decode mm-bodies mm-encode mailcap mail-parse rfc2231 rfc2047 rfc2045
qp ietf-drums mailabbrev nnheader gnus-util netrc time-date mm-util
mail-prsvr gmm-utils wid-edit mailheader canlock sha1 hex-util hashcash
mail-utils warnings emacsbug sendmail regexp-opt tooltip ediff-hook
vc-hooks lisp-float-type mwheel ns-win easymenu tool-bar dnd fontset
image fringe lisp-mode register page menu-bar rfn-eshadow timer select
scroll-bar mldrag mouse jit-lock font-lock syntax facemenu font-core
frame cham georgian utf-8-lang misc-lang vietnamese tibetan thai
tai-viet lao korean japanese hebrew greek romanian slovak czech european
ethiopic indian cyrillic chinese case-table epa-hook jka-cmpr-hook help
simple abbrev loaddefs button minibuffer faces cus-face text-properties
overlay md5 base64 format env code-pages mule custom widget
hashtable-print-readable backquote make-network-process ns multi-tty
emacs)