2012/8/10 Eli Zaretskii <eliz@gnu.org>
> From: qq510371827 <qq510371827@gmail.com>
> Date: Fri, 10 Aug 2012 17:14:14 +0800
>
> > Try invoking GDB from Emacs like this:
> >
> >   M-x gud-gdb RET
> >
> > If that doesn't help, either, then I'm clueless, sorry.  Perhaps
> > someone else could help.
> >
>  Thanks for your patience. It finally works. However, two other new
> problem appeared after using 'gud-gdb'.
> 1).the code, gdb information and out/input datas mixed together in the same
> buffer and 'gdb-many-windows' command didn't work any more.

This is expected.  gud-gdb uses the old interface with GDB, which
doesn't support gdb-many-windows.

> 2) You can refer this link:
>  http://stackoverflow.com/questions/9676135/gud-gdb-emacs-24-not-working
> The same problem as mine.

No, it isn't the same.  Your problem was with getting input and output
to and from the debuggee.  The above URL describes a much more serious
problem, whereby Emacs doesn't show the source code of functions you
step through.  I don't see any of this in your original bug report
(and it surely works for me on MS-Windows).
I'm sorry.I got it wrong. 
As for the original problem: could you please post here a minimal C
program that exhibits the problem with I/O when you use "M-x gdb"?  I
will then try to look into the reasons of this and the possible ways
to solve that, when I have time.

Thanks.
Ok,source code is as follows:
#include "stdio.h"
#include "ctype.h"
#include "string.h"

void Reverse(char* p,int n)
{
    if(--n > 0) Reverse(p+1,n);
    printf("%c",*p);
    fflush(stdout);
}
int main()
{
  //setbuf(stdin,NULL);
  //setbuf(stdout,NULL);
  // setvbuf(stdin,NULL,_IONBF,0);
  // setvbuf(stdout,NULL,_IONBF,0);
  //freopen("input.txt","r",stdin);
    char s[255],*p,*q;
    int i=0,n;
    fgets(s,255,stdin);
    s[strlen(s)-1] = ' ';
    p = q = s;                               //  set breakpoint at this line.
    while(*p != '\0')
    {
        i++;
        p++;
        if(isspace(*p))
        {
            n = i;
            i = 0;
            Reverse(q,n);
            q = p+1;
        }
    }
    n = i;
    Reverse(q,n);
    printf("\n");
    return 0;
}
Thanks in advance.