Я в настоящее время следую this video о том, как работать с сборкой и gdb, используя this C program, но у меня проблема. Вот что мне делать, чтобы компилировать и отлаживать:gdb не принимает вход пользователя
[email protected]:~/assem$ gcc -ggdb -o SimpleDemo SimpleDemo.c
[email protected]:~/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 = %d\n",a, b, c);
25
26 exit(0);
27
28 }
(gdb) run 10 20
Starting program: /home/chiggins/assem/SimpleDemo 10 20
demo
Теперь откуда я «демо» набрали в конце концов, это то, где программа должна быть принимать пользовательский ввод. Но когда я нажимаю return после ввода ввода, ничего не происходит. Я не могу ctrl + c из программы, ничего не могу сделать. В итоге мне приходится убивать процесс с другой сессии, чтобы я мог получить контроль. Любые идеи, почему gdb делает это, или что я могу делать неправильно?
Спасибо!
Я считаю, что это правильно, потому что название программы, как правило, ARGV [0]. Это странная конвенция C. – squiguy
Вы пытались использовать GDB для перехода через программу, чтобы увидеть, где ее повесили? –
@VanDarg - Нет, просто потому, что он работает в видео, и я следил за всем персонажем по характеру. – Chiggins