加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

gdb不接受用户输入

发布时间:2020-12-16 07:00:24 所属栏目:百科 来源:网络整理
导读:我目前正在关注如何使用 this C program如何使用程序集和gdb,但是我遇到了一个问题.这是我编译和运行gdb的方法: chiggins@host:~/assem$gcc -ggdb -o SimpleDemo SimpleDemo.cchiggins@host:~/assem$gdb ./SimpleDemoGNU gdb (Ubuntu/Linaro 7.4-2012.04-0u
我目前正在关注如何使用 this C program如何使用程序集和gdb,但是我遇到了一个问题.这是我编译和运行gdb的方法:

chiggins@host:~/assem$gcc -ggdb -o SimpleDemo SimpleDemo.c
chiggins@host:~/assem$gdb ./SimpleDemo
GNU gdb (Ubuntu/Linaro 7.4-2012.04-0ubuntu2) 7.4-2012.04
Copyright (C) 2012 Free Software Foundation,Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY,to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
For bug reporting instructions,please see:
<http://bugs.launchpad.net/gdb-linaro/>...
Reading symbols from /home/chiggins/assem/SimpleDemo...done.
(gdb) list
4       int add(int x,int y)
5       {
6               int z =10;
7
8               z = x + y;
9               return z;
10      }
11
12      main(int argc,char **argv)
13      {
(gdb)
14              int a = atoi(argv[1]);
15              int b = atoi(argv[2]);
16              int c;
17              char buffer[100];
18
19              gets(buffer);
20              puts(buffer);
21
22              c = add(a,b);
23
(gdb)
24              printf("Sum of %d+%d = %dn",a,b,c);
25
26              exit(0);
27
28      }
(gdb) run 10 20
Starting program: /home/chiggins/assem/SimpleDemo 10 20
demo

现在从最后输入“demo”的地方开始,这就是程序应该接受用户输入的地方.但是当我在输入后按回车键时,没有任何反应.我无法ctrl c退出程序,无法做任何事情.我最终不得不从另一个会话中删除该进程,以便我可以控制回来.任何想法为什么gdb这样做,或者我可能做错了什么?

谢谢!

解决方法

我不确定为什么这对你不起作用;它按预期工作……

尽管如此,我发现在单独的终端中运行执行交互式I / O的程序更容易,也许它会对你有所帮助.

在一个终端,

$gdbserver --multi localhost:4242
listening on port 4242

而在另一个,

$gdb ./SimpleDemo
(gdb) target extended-remote localhost:4242
Remote debugging using localhost:4242
(gdb) run 10 20

回到运行gdbserver的终端,

Remote debugging from host 127.0.0.1
Process ./SimpleDemo created; pid=PID
demo
demo
Sum of 10+20 = 30

Child exited with status 0

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读