unofficial mirror of help-gnu-emacs@gnu.org
 help / color / mirror / Atom feed
* emacs gdb subproccess ignores printf (stdout isn't flushed ?) on OS X
@ 2005-02-20 19:17 Mike Garey
  2005-02-20 22:51 ` Peter Dyballa
  0 siblings, 1 reply; 4+ messages in thread
From: Mike Garey @ 2005-02-20 19:17 UTC (permalink / raw)


I've noticed that when using gdb under the carbon (Apple OS X) version
of GNU Emacs 21.3.50.1, printf statements are not printed until after
the program has terminated, even though the print statements contain a
newline.  I can force them to print by modifying my source and adding
"fflush(NULL);" after each printf statement, but I'd like to find out
how to avoid this.

I compiled this version from the 21.3.50.1 CVS source as of Dec 30th,
2004.  I'm thinking that perhaps I might've missed some compile flag
or something?  Because I've tested with the fink version 21.3.50.1 and
it works without issue, and also with version 21.2.1 which comes with
Panther.  So it's only this self compiled version that's giving me
problems.

I would gladly switch back to a previous carbon version, however,
there's a problem with lisp.el which prevents sexp-selections from
being extended, and it's a feature I need.  This has been addressed by
21.3.50.1, although like I said, gdb printf statements don't produce
immediate output.  So ideally I'd like to find out how to fix this
problem with 21.3.50.1

While we're on the subject of using gdb from within emacs, I'm curious
if there's any way to suppress the following control characters when
using gdb:

^[^[[0K(gdb) 
^[^[[2A
^[^[[0Khello, world!

I've set --annotate=1, and I don't receive any control characters
while single stepping, it's only when printing that I receive the
characters as mentioned above (the ^[[0K and such).  And of course
this doesn't happen with version 21.3.50.1, since I can't even get my
printf lines to show output.

So if anyone has any suggestions, please let me know, I'd really
appreciate it.  Thanks,

Mike

P.S. I'm using GNU gdb 5.3-20030128 (Apple version gdb-330.1) with
Panther (10.3.4) on a G4 iBook 800mhz if that makes any difference.

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

* Re: emacs gdb subproccess ignores printf (stdout isn't flushed ?) on OS X
  2005-02-20 19:17 emacs gdb subproccess ignores printf (stdout isn't flushed ?) on OS X Mike Garey
@ 2005-02-20 22:51 ` Peter Dyballa
  2005-02-20 23:08   ` suppressing gdb subprocess control characters? (was Re: emacs gdb subproccess ignores printf (stdout isn't flushed ?) on OS X) Mike Garey
  0 siblings, 1 reply; 4+ messages in thread
From: Peter Dyballa @ 2005-02-20 22:51 UTC (permalink / raw)
  Cc: help-gnu-emacs


Am 20.02.2005 um 20:17 schrieb Mike Garey:

> I've noticed that when using gdb under the carbon (Apple OS X) version
> of GNU Emacs 21.3.50.1, printf statements are not printed until after
> the program has terminated, even though the print statements contain a
> newline.  I can force them to print by modifying my source and adding
> "fflush(NULL);" after each printf statement, but I'd like to find out
> how to avoid this.

Hello!

Could you check process-connection-type? Is it nil, i.e.communication 
via pipes? Then try it with this:

         (setq process-connection-type t)

This makes shell work correct too!

--
Greetings

   Pete

The mathematician who pursues his studies without clear views of this 
matter, must often have the uncomfortable feeling that his paper and 
pencil surpass him in intelligence. (Ernst Mach)

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

* suppressing gdb subprocess control characters? (was Re: emacs gdb subproccess ignores printf (stdout isn't flushed ?) on OS X)
  2005-02-20 22:51 ` Peter Dyballa
@ 2005-02-20 23:08   ` Mike Garey
  2005-02-21  0:21     ` Peter Dyballa
  0 siblings, 1 reply; 4+ messages in thread
From: Mike Garey @ 2005-02-20 23:08 UTC (permalink / raw)


Thanks for the help Peter, setting process-connection-type to true worked.

I should also mention that after I sent the message to the list, I
downloaded and compiled the newest CVS source (GNU Emacs 22.0.50.1),
and it seemed to fix the problem as well (without the need to setq
process-connection-type t).  Although, strangely enough, with the
newest CVS version, I no longer get a red dot representing a
breakpoint under the gdb subprocess.. I'm sure there's probably just
some setting I need to change to get this to work.

I'm still curious as to how to suppress the strange control characters
printed by gdb, such as:

^[[2A
^[[0Khello, world!

since it'd be a lot easier to read output without seeing these odd
characters.  Thanks again for the help!

Mike

P.S. I've tried setting the gdb annotation level to 1 to remove the
control characters, and while it removes some of them, the ones above
still remain (although they only appear when executing a printf
statement it seems).  I'm thinking it might have something to do with
the buffer-coding-system setting?


On Sun, 20 Feb 2005 23:51:20 +0100, Peter Dyballa <Peter_Dyballa@web.de> wrote:
> 
> Am 20.02.2005 um 20:17 schrieb Mike Garey:
> 
> > I've noticed that when using gdb under the carbon (Apple OS X) version
> > of GNU Emacs 21.3.50.1, printf statements are not printed until after
> > the program has terminated, even though the print statements contain a
> > newline.  I can force them to print by modifying my source and adding
> > "fflush(NULL);" after each printf statement, but I'd like to find out
> > how to avoid this.
> 
> Hello!
> 
> Could you check process-connection-type? Is it nil, i.e.communication
> via pipes? Then try it with this:
> 
>          (setq process-connection-type t)
> 
> This makes shell work correct too!
> 
> --
> Greetings
> 
>    Pete
> 
> The mathematician who pursues his studies without clear views of this
> matter, must often have the uncomfortable feeling that his paper and
> pencil surpass him in intelligence. (Ernst Mach)
> 
>

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

* Re: suppressing gdb subprocess control characters? (was Re: emacs gdb subproccess ignores printf (stdout isn't flushed ?) on OS X)
  2005-02-20 23:08   ` suppressing gdb subprocess control characters? (was Re: emacs gdb subproccess ignores printf (stdout isn't flushed ?) on OS X) Mike Garey
@ 2005-02-21  0:21     ` Peter Dyballa
  0 siblings, 0 replies; 4+ messages in thread
From: Peter Dyballa @ 2005-02-21  0:21 UTC (permalink / raw)
  Cc: help-gnu-emacs


Am 21.02.2005 um 00:08 schrieb Mike Garey:

> ^[[2A
> ^[[0Khello, world!

gdb or Emacs or both think they're running in a DEC terminal or such, 
so they're sending ANSI escape codes to it to position the text 
somewhere on the terminal's screen, or to set it bold, blinking, ...

Since I haven't used gdb for so many years I actually have no idea -- 
have you seen the invisible directory .MacOSX in you home directory? It 
contains a file environment.plist. To edit it you'll need some of the 
Developer Tools, the Property List Editor, in 
/Developer/Applications/Utilities. Just type in Terminal (or Carbon 
Emacs) "open ~/.MacOSX/environment.plist" and it'll appear. Now you 
could add a new environment variable TERM and give it the value emacs, 
or dumb. But be careful: some applications might fail after a new login 
(that's needed to make the new setting/sibling active)!

A less dangerous setting would be in the gdb section. AFAIR you can 
trim its run-time environment. Maybe here's a choice to set the 
TERMinal value to something dumb, something that can't be controlled by 
ANSI escape sequences. Just read a bit of the documentation!

--
Greetings

   Pete

One doesn't expect governments to obey the law because of some
higher moral development.  One expects them to obey the law because
they know that if they don't, those who aren't shot will be hanged.
                                                  --Michael Shirley

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

end of thread, other threads:[~2005-02-21  0:21 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-02-20 19:17 emacs gdb subproccess ignores printf (stdout isn't flushed ?) on OS X Mike Garey
2005-02-20 22:51 ` Peter Dyballa
2005-02-20 23:08   ` suppressing gdb subprocess control characters? (was Re: emacs gdb subproccess ignores printf (stdout isn't flushed ?) on OS X) Mike Garey
2005-02-21  0:21     ` Peter Dyballa

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