Programowanie w systemie UNIX/gdb: Różnice pomiędzy wersjami
Usunięta treść Dodana treść
→Przykładowa sesja: ref |
→Znajdowanie źródła problemu: nowy przykład |
||
Linia 72:
=Znajdowanie źródła problemu=
==Przykład==
Mamy prosty program :<ref>[http://unix.stackexchange.com/questions/63691/linux-gcc-compiler-options ]</ref>
int main() { int x = 1/0; }
kompilujemy standardowo :
gcc t.c
wynik :
t.c: In function ‘main’:
t.c:3:14: warning: division by zero [-Wdiv-by-zero]
int x = 1/0;
^
uruchamiamy program pod gdb :
gdb -q ./a.out
Reading symbols from /home/a/cn/gdb/1/a.out...(no debugging symbols found)...done.
(gdb) run
Starting program: /home/a/cn/gdb/1/./a.out
Program received signal SIGFPE, Arithmetic exception.
0x00000000004004fc in main ()
(gdb) quit
A debugging session is active.
Inferior 1 [process 5477] will be killed.
Quit anyway? (y or n) y
Teraz kompilujemy z opcją g :
gcc -g t.c
t.c: In function ‘main’:
t.c:3:14: warning: division by zero [-Wdiv-by-zero]
int x = 1/0;
i uruchamiamy pod gdb : ^
gdb -q ./a.out
<pre>
Reading symbols from /home/a/cn/gdb/1/a.out...done.
(gdb) run
Starting program: /home/a/cn/gdb/1/./a.out
Program received signal SIGFPE, Arithmetic exception.
0x00000000004004fc in main () at t.c:3
3 int x = 1/0;
(gdb) quit
A debugging session is active.
Inferior 1 [process 5488] will be killed.
Quit anyway? (y or n) y
</pre>
Otrzymujemy więcej informacji
==Przerwania==
|