Инструментальные средства

  • View
    324

  • Download
    2

Embed Size (px)

Transcript

..

... ,. . ,.. ,.. ,.. ,..

UNIX( - )

2011

....................................................................................................2 GNU Compiler Collection ......5 , ..............................6 gcc .........................................................................8 ...........................11 ......................................................................12 ...............................14 The GNU Project Debugger ...................................................16 - .........................17 ........................18 ........................................................................19 ...........................................................21 GNU Make .........................................24 Code::Blocks ......................................................................34 Valgrind ...................................................................35 Memcheck .............................................................................................36 Massif ....................................................................................................38 Cachegrind .............................................................................................41 Callgrind ................................................................................................46 CUnit .................................................48 .................................................................................................51 ..................................................................................................51 .....................................................................................................52 ...............................................................................................52 ........................................................................................53 .................................................................................53 ....................................................................53 3

................................54 CUnit.............................................................55 Doxygen ....................................................................................................59 ...................................................61 ........................................................................61 ...........................................................63 Doxygen ....................................................................................64

4

, , . (., software engineering) , (., software development life cycle) . , UNIX. , GNU Compiler Collection, GNU Debugger Code::Blocks, , : GNU Make, Valgrind, CUnit Doxygen. GNU Compiler Collection GNU compiler collection (GCC) (http://gcc.gnu.org) , ++, . GCC : ++. . Unix ( ) , . ++ ( ). 5

- , GCC . , gcc , g++ - ++ . . GCC : (GNU Assembler, as), (GNU linker, ld1) . Linux binutils. . Linux glibc, glibc-devel, glibc-static. , , GCC. GCC :gcc

, , . gcc .,

, Unix. : ; ; ; .

.c, .h. Unix ,1

load - .

6

, , .C, ++, ++, . . .c , , , , #include. - , , #include - . .i, , (, , , ) -E gcc. (., translation unit) (., compilation unit) . , ( ) ( ) , . .s, , , . . . . UNIX .o. . , , , , , . 7

gcc

GNU . . . . , . .h . gcc. . . , . ,

.c

.i

. , . . .

.s .S

. , . . . . .

.o .a

. , 1.c 2.o, , . , .

8

, . , . gcc , . -E

. . -o. , . . .c .i .s. -o. -o . . .o. -o, . , . a.out, -o.

-S

-c

-o

. ,

gcc 1.c 2.c -o 1

9

, 1. gcc 3.o 4.o -o 3 -lm

, ( -lm), 3. gcc . -I PATH PATH , , #include. -I, , . NAME, 1. NAME, VALUE. , . , , . . , . , 10

-D NAME -D NAME=VALUE -Wall

-g

-O2

. -L PATH PATH , , -L. -L, , . name , ( ). Unix , , , . , name, libname.a, , libname.so, . , . . , . .

-lname

-static

++ : , , , , , . , , 11

( ) ( ). /usr/include , , /usr/include/stdio.h /usr/include/sys/types.h. - gcc , /usr/include I. /lib /usr/lib, /usr/lib. L . libc.so /lib/libc.so. , , gcc , :gcc -I/usr/include -L/lib -L/usr/lib jeltz.c lc

, , , sin. libm.so (libm.a), . , , gcc -lm:gcc -Wall -O2 marvin.c -omarvin lm

, , gcc , , , v:gcc -g -O0 -v prosser.c -o prosser

, , :

12

, static, . ( ), , . , . , , . , . , , , . . , var : :int var = 1; int add1(void) { return var++; }

:int var; int add2(void) { return var += 2; }

int var; int add3(void) { return var+=3; }

, var , , , . var, . : : 13

int var = 1; int add1(void) { return var++; }

int var = 1; int add2(void) { return var += 2; }

int var = 1; int add3(void) { return var+=3; }

extern static. extern . static , .

, , . . . , . , - , , , , , , , , . static , . , . , . .c , .h, 14

, , ., . .c .h . .h- .c . .h .. (., include guard):#ifndef __NAME_H__ #define __NAME_H__ #endif

NAME ( ). .h .h , , , , , . .c , . , . , , . extern , . , extern, . static. - , . 15

TheGNUProjectDebugger (., debugger) , () . ( ), , . . , GNU, The GNU Project Debugger (GDB) (http://www.gnu.org/s/gdb/). . , , (, , , ) . (, ), , . , , , , . , . : - ; ; . , , . (), . , . 16

.. (., core dump) . , (), - . , , . , , (), , . . . GCC -g. ,gcc -g prog.c -oprog

marvin.c marvin . .

.gdb prog

prog , . GDB . , . run. . , , . .$ gcc -g prog.c -oprog $ gdb prog GNU gdb (GDB) Fedora (7.2-51.fc14)

17

Copyright (C) 2010 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later 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 "i686-redhat-linux-gnu". For bug reporting instructions, please see: ... Reading symbols from /home/cher/gdb/prog...done. (gdb) b main main Breakpoint 1 at 0x80483bd: file prog.c, line 5. (gdb) run Starting program: /home/cher/gdb/prog Breakpoint 1, main () at prog.c:5 5 printf("Hello, I'm Eddie!\n"); (gdb) main

, . , , , , . . GDB : , (PID). .$ gdb ./ej-users 7096 ej-users 7096 GNU gdb (GDB) Fedora (7.2-51.fc14) Copyright (C) 2010 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later

18

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 "i686-redhat-linux-gnu". For bug reporting instructions, please see: ... Reading symbols from /home/cher/ejudge/ej-users...done. Attaching to program: /home/cher/ejudge/ej-users, process 7096 0xb78c1424 in __kernel_vsyscall () (gdb) bt #0 0xb78c1424 in __kernel_vsyscall () #1 0x00a8788d in ___newselect_nocancel () at ../sysdeps/unix/syscall-template.S:82 #2 0x0806e502 in do_work () at userlist-server.c:10244 #3 0x0806fee5 in main (argc=5, argv=0xbfb06754) at userlist-server.c:10816 (gdb) up 2 #2 0x0806e502 in do_work () at userlist-server.c:10244 10244 val = select(max_fd, &rset, &wset, NULL, &timeout); (gdb) p max_fd max_fd $1 = 7 7 (gdb) quit A debugging session is active. Inferior 1 [process 7096] will be detached. Quit anyway? (y or n) y , Detaching from program: /home/cher/ejudge/ej-users, process 7096 $

, , , , 0, abort(),

19

, . ( core-). core- . ,$