개발도구
|
|
- 규진 태
- 5 years ago
- Views:
Transcription
1 리눅스개발도구 II - 디버깅 - 1
2 Contents C 프로그래밍오류의사례 gdb 디버거 메모리디버깅 기타디버깅 시스템콜, 라이브러리호출디버깅 매크로, assert() 2 System Security Lab@Myongji Univ.
3 프로그래밍오류 (error) 오류의유형 구문오류 (syntax error) 의미오류 (semantic error) 정적의미오류 (static semantic error) 동적의미오류 (dynamic semantic error) 논리오류 (logic error) 3 System Security Lab@Myongji Univ.
4 Syntax error 정해진구문에맞지않는오류 컴파일러의컴파일단계에서발견됨 예 = 10; 식별자규칙에맞지않음 와같은특수기호는식별자로사용할수없음 ) if( x!= 0 if 문의구문에맞지않음 ( 오른쪽괄호를 빠뜨림 ) x = a +* c; 수식의구문에맞지않음 (+ 와 * 사이에 피연산자를빠뜨림 ) x = a 문장의구문에맞지않음 ( 세미콜론을 빠뜨림 ) 4 System Security Lab@Myongji Univ.
5 Static semantic error 정해진의미에맞지않는오류중에서컴파일단계에서발견되는오류 예 비호환타입의변수간의연산 : 연산은같은데이터타입간에수행되어야한다. 어떤연산은묵시적타입변환을수행해주기도한다 선언되지않은변수의사용 : 변수는사용전에선언 ( 정의 ) 되어야한다 함수의인자개수나인자타입의불일치 5 System Security Lab@Myongji Univ.
6 Dynamic semantic error 정해진의미에맞지않는오류중에서실행시간에발견되는오류 예 배열에서인덱스가배열의범위를넘어감 포인터가잘못된주소를참조함 0 으로나누기 6 System Security Lab@Myongji Univ.
7 Logic error 프로그래머가원래의목적대로프로그램을작성하지않아서발생하는오류 예 반복문의조건검사식에서값을잘못주어서무한루프를야기함 7 System Security Lab@Myongji Univ.
8 예제프로그램 int gcd(int v#) syntax error ( 식별자가잘못됨 ) { int a = value syntax error ( 세미콜론을빠뜨림 ) int t; y = v; static semantic error (y가정의안됨 ) while (y >= 0) { t = y; y = a % y; dynamic semantic error (0으로나눔 ) a = t; } return y; logic error (t를반환해야함 ) } 8 System Security Lab@Myongji Univ.
9 오류의사례 = 와 == 비교연산자대신에대입연산자를사용하는경우 if ( x = y ) 다음반복문을살펴보고결과를분석해보자 While ( c = c == \t c == \n ) {. } - 대입연산자대신에비교연산자를사용하는경우 if ( fd == open( sample.txt, 0) < 0 ) 9 System Security Lab@Myongji Univ.
10 오류의사례 (cont.) & 와 &&, 와 비트연산자 (&, ) : 비트단위의연산 논리연산자 (&&, ) : 참거짓의논리연산 역참조연산자 (*) *p 값으로나누기를할때 y = x /*p; /* 는설명문의시작 y = x / *p; / 와 * 사이를띄움 : 올바름 10 System Security Lab@Myongji Univ.
11 오류의사례 (cont.) 8 진수상수 0 으로시작하는숫자는 8 진수 int x = 0195; 8 진수 195 와 문자는 로둘러싸고, 문자열은 로둘러싸야함 char *splash = / ; printf( \n ); / 로해야함 \n 로해야함 11 System Security Lab@Myongji Univ.
12 오류의사례 (cont.) 세미콜론 (;) if, switch, for, while 문뒤에는세미콜론을붙여서는안된다 if( a > max ) { max = a; } 세미콜론이없음 do-while 문위에는세미콜론을붙인다. do { i++; } while (i < 5); 세미콜론이있어야함 12 System Security Lab@Myongji Univ.
13 오류의사례 (cont.) 세미콜론 (;) (cont.) 함수뒤에는세미콜론을붙여서는안된다. main() { } 세미콜론이없음 struct, union 선언문뒤에는세미콜론을붙여야한다 struct record { int date; int time; }; 세미콜론이있음 13 System Security Lab@Myongji Univ.
14 오류의사례 (cont.) switch 문에서 break 사용 case 문에서 break 문을생략하면, 그다음 case 문에나오는문장을계속수행한다. color = 2; switch( color ) { case 1: printf( red ); case 2: printf( yellow ); case 3: printf( blue ); } yellow 가아닌 yellowblue 가출력됨 14 System Security Lab@Myongji Univ.
15 오류의사례 (cont.) if 문에서 dangling else else 는가장가까운 if 와연관된다 if( x == 0 ) if( y == 0) error(); else else는어떤 if에연관되는가? z = x + y; 15 System Security Lab@Myongji Univ.
16 오류의사례 (cont.) 배열크기와인덱스 배열크기가 n 일때, 인덱스는 0 부터 n-1 이다 int a[10], i; for( i = 0; i <= 10; ++i) a[i] = 0; a[10] 의메모리위치가 i 의위치와같을수있으며, 이때, a[10]=0 은 i = 0 을수행하는효과를가지게되어, for 문은무한루프를수행하게됨 16 System Security Lab@Myongji Univ.
17 오류의사례 (cont.) 단축연산 논리연산자는피연산자두개중에서, 앞에나오는피연산자만으로결과가결정되면뒤에나오는피연산자는평가하지않는다 if( a < 10 && count++ < limit ) { } a 가 10 보다작으면 && 다음의수식은연산하지않는다. 따라서, count 값이증가하지않는다. 17 System Security Lab@Myongji Univ.
18 오류의사례 (cont.) 증감연산자 (++, --) 증감연산자가다른수식과같이쓰일때는연산의우선순위가불확실하다 a = 0; while( a < n ) x[a] = y[a++]; 원래의목적은 y[a] 값을 x[a] 에대입하고, a 값을증가시키는것이다. 그런데, 컴파일러마다결과가다를수있으므로다음과같이확실하게하는것이좋다. x[a] = y[a]; a ++; 18 System Security Lab@Myongji Univ.
19 오류의사례 (cont.) Linked list 구조체를 typedef 를사용하여선언할때 typedef struct { char item; NODEPTR *next; } *NODEPTR; 컴파일에러 다음과같이해주면됨. typedef struct node { char item; struct node *next; } *NODEPTR; struct node { char item; struct node *next; } ; typedef struct node *NODEPTR; 19 System Security Lab@Myongji Univ.
20 오류의사례 (cont.) 메모리누수 (memory leak) 할당받은동적메모리를반환하지않아서발생하는문제 malloc() 으로할당한동적메모리를 free() 하지않을때방생 char *buf; buf = (char *) malloc(100); if( error ) { } return error; free(buf); free() 를호출하지않고바로 return 동적메모리를할당하여그주소를가진포인터를잘못해서지웠을때발생 20 System Security Lab@Myongji Univ.
21 오류의사례 (cont.) 메모리손상 (memory corruption) 사용중인메모리를잃어버렸을때발생하는문제 함수에서지역변수의주소를가진포인터를반환했을때발생 : 지역변수는스택에임시로생성되었다가함수가끝나면소멸됨 int *function() { int a; int *p = &a; return p; } 소멸될 a 의주소를반환함 21 System Security Lab@Myongji Univ.
22 오류의사례 (cont.) 메모리손상 (memory corruption) (cont.) 할당받은메모리의앞또는뒤에있는메모리의읽기또는쓰기 배열에서인덱스가배열의범위를넘었을때 ( 앞을참고 ) 초기화되지않는메모리의읽기또는쓰기 초기화되지않은포인터의사용 int *p; *p = 100; p를초기화하지않고사용함 반환된메모리의읽기또는쓰기 free() 된이후에계속사용할때발생 22 System Security Lab@Myongji Univ.
23 gdb 디버거 23
24 gdb 디버거 GNU 디버거로서, C, C++, Fortran 등여러프로그램을디버깅할수있다. gdb 를사용하여디버깅하려면, 컴파일할때 g 옵션을사용해야한다. gcc g o myprog myprog.c 이옵션은목적파일내부에디버깅정보를삽입한다. 디버깅섹션보기 : objdump s myprog 소스코드가컴파일할때의디렉토리에있어야 gdb 에서소스코드를볼수있다. 소스코드가있는디렉토리를재지정할수있음 (dir dirname) 24 System Security Lab@Myongji Univ.
25 gdb 디버거 gdb 디버거의동작 디버깅정보가포함된바이너리파일을실행 ptrace 시스템호출을이용하여프로세스의제어권확보 정지점설정, 명령어단위수행 프로세스의메모리, 레지스터내용을접근 임베디드시스템의경우, 타겟컴퓨터에는 gdbserver 라는매우작은프로그램을실행하고 (ARM 의경우약 50KB), 호스트 PC 에서는 gdb 를실행하면서타겟의 gdbserver 와시리얼 / 네트워크통신하는원격디버깅이가능함 25 System Security Lab@Myongji Univ.
26 gdb gdb 시작하기 gdb program gdb program core-file gdb program pid program : 디버그할프로그램명 core-file : 디버그할프로그램이실행되면서만든코어파일 pid : 실행중인프로세스의 pid 예 ) gdb qsort2 시작하면 (gdb) 라는프롬프트를보여주고사용자의명령어를기다린다. 26 System Security Lab@Myongji Univ.
27 gdb 코어파일을이용한디버깅 코어파일 : 프로세스가오류 ( 주로 segmentation fault) 로인해종료되는순간의프로세스의이미지파일로서 CPU 레지스터, 프로세스의코드및데이터, 스택등의정보가들어있다. 만약, 프로그램이비정상종료되어도코어파일이만들어지지않는다면, 시스템에지정되어있는코어파일의크기를늘려주어야한다 ( 기본값은 0) ulimit S c unlimited./myprog gdb myprog core 프로그램이왜종료되었는지를보여주고, 종료된지점의소스코드를보여준다. 27 System Security Lab@Myongji Univ.
28 gdb 코어파일을이용한디버깅 : 실습 /* File: segfault.c */ #include <stdio.h> main() { int *a = NULL; *a = 0x01; return 0; } $ gdb g o segfault segfault.c $./segfault Segmentation fault (core dumped) $ ls core* core.6663 $ gdb segfault core.6663 (gdb) 28 System Security Lab@Myongji Univ.
29 gdb 실행중인프로세스의디버깅 실행중인프로세스가죽지는않았지만, 올바르게수행되지않는경우에디버깅할수있다 먼저프로세스의 PID 를알아내야한다 ps gdb 를실행하고 attach 명령을사용한다 gdb myprog ( 가정 : myprog 가수행중 ) (gdb) attach ( 가정 : myprog 의 PID 가 21001) 이제디버거명령을이용하여디버깅하면됨 디버깅이끝나면 detach 명령을사용하여프로세스를떼어낸다 (gdb) detach 29 System Security Lab@Myongji Univ.
30 gdb 도움말보기 : help gdb 끝내기 : quit (q) 30 System Security Lab@Myongji Univ.
31 /* File : myprog.c */ #include <stdio.h> struct book{ int page; int price; } c_prog = {300, 10000}; int global_value = 0; char *color[3] = { blue, white, red }; func1(int a) { return a % 2; } int main() { int i, local_value = 10; char *local_str = c programming ; struct book *ptr = &c_prog; for(i = 0; i < 4; i++) { printf( color[i]=%s\n, color[i] ); if( func1(i) ) { local_value = local_value / global_value; printf( local_value = %d\n, local_value); } } } return 0; 31
32 소스보기 : list 소스파일내용보기 list (l) [ 행번호 ] list [ 함수명 ] list [ 파일명 ]:[ 함수명 ] list - 이전행출력 % gdb qsort2 (gdb) list 13 void qsort2(); 14 void swap(); main() 17 { (gdb) set listsize N : 출력되는행의수를 N 으로설정 info source : 소스코드정보를보여줌 32 System Security Lab@Myongji Univ.
33 소스보기 : list [ 실습 ] 함수 func1 의소스를출력하기위한명령어를쓰시오. 함수 main 의소스를출력하기위한명령어를쓰시오. 33 System Security Lab@Myongji Univ.
34 소스코드편집 : edit 소스코드편집하기 디폴트편집기는 ex 편집기를 vi 로설정하려면, export EDITOR=/bin/vi 를한후, gdb 를수행 edit [ 행번호 ] edit [ 파일이름 ]:[ 행번호 ] edit [ 함수명 ] 34 System Security Lab@Myongji Univ.
35 프로그램실행하기 : run 프로그램실행하기 : run (r) % gdb qsort2 (gdb) run b < inputfile > outfile Program exited with code 0. (gdb) (gdb) set args b (gdb) show args 프로그램의인자를지정하고수행할수있음 프로그램의인자를따로지정할때 (gdb) r 0x22c8 in march( ) at ref.c:16 16 H = *p; (gdb) backtrace 프로그램이비정상적으로정지되면제어권이 gdb 로돌아오고프로그램내용을보여준다. backtrace 명령어로스택을역추적 35 System Security Lab@Myongji Univ.
36 프로그램실행하기 명령어 step (s) next (n) continue (c) until (u) finish return [ 반환값 ] 의미 현재행을실행후정지. 함수호출일경우함수내부로진입 현재행을실행후정지. 함수호출일경우함수를실행후다음행으로감 다음정지점까지계속실행 for 문을빠져나가서다음정지점까지실행 현재함수의끝지점까지실행 현재함수의나머지부분을실행하지않고빠져나감 step instruction (si) 현재명령어를실행후정지. 함수호출일경우함수내부로진입 next instruction (ni) 현재명령어를실행후정지. 함수호출일경우함수를실행후다음행으로감 36 System Security Lab@Myongji Univ.
37 정지점 (breakpoint) 설정 : break 정지점설정 : break (b) 예 b func b 10 b file.c:func b file.c:10 b +2 b -2 b *0x b 10 if val=0 의미함수 func의시작부분에정지점설정 10행에정지점설정파일 file.c의함수 func의시작에정지점설정파일 file.c의 10행에정지점설정현재행에서 2 행이후지점에정지점설정현재행에서 2 행이전지점에정지점설정주소 0x123456에정지점설정 10행에정지점설정. 단, val이 0일때작동 정지점은 1 부터시작하는고유번호를가지며, gbd 가종료할때까지유효함 37 System Security Lab@Myongji Univ.
38 정지점 (breakpoint) 해제 : clear 정지점해제 : clear (cl) 또는 delete (d) 예 cl func cl 10 d d 2 의미함수 func에설정된정지점해제 10행에설정된정지점해제모든정지점해제정지점 2번해제 정지점보기 : info breakpoints (b) 현재설정되어있는정지점목록을출력 정지점에부여된번호, 위치등을볼수있다 38 System Security Lab@Myongji Univ.
39 정지점활성 / 비활성 : enable/disable 정지점활성 / 비활성 : enable/disable 예 enable b 2 disable b 2 의미 정지점 2 번을활성화 정지점 2 번을비활성화 39 System Security Lab@Myongji Univ.
40 정지점 [ 실습 ] 1. 함수 main 의 for 문블록의첫문장에서정지점을설정하시오. 2. 함수 func1 의시작부분에정지점을설정하시오. 3. 함수 main 의 if 문블록의첫문장에서정지점을설정하되 global_value 값이 0 일때만작동하도록설정하시오. 4. 문제 1 에서설정한정지점을잠시해제하시오. 5. 문제 4 에서잠시해제한정지점을활성화하시오. 40 System Security Lab@Myongji Univ.
41 감시점 (watch point) 설정 : watch 감시점설정 : watch watch [ 변수명 ] 변수의값이바뀔때마다정지하면서변수의이전값과현재값을출력 (gdb) watch p Hardware watchpoint 2: p (gdb) c Hardware watchpoint 2: p Old value = 100 New value = 101 0x d in main () at qsort.c: p = p + 1; (gdb) 41 System Security Lab@Myongji Univ.
42 감시점설정 감시점설정 rwatch [ 변수명 ] 변수의값이읽혀질때마다정지하면서변수의이전값과현재값을출력 awatch [ 변수명 ] 변수의값이읽기, 쓰기될때마다정지 42 System Security Lab@Myongji Univ.
43 변수보기 변수보기 명령어 info locals info variables print (p) [ 변수명 ] print [ 함수명 ] print 파일명 :: 변수명 print 함수명 :: 변수명 whatis [ 변수명 ] 의미현재상태에서지역변수들의정보전역변수들의정보변수의값을출력함수의주소를출력특정파일의전역변수값을출력특정함수의 static 변수값을출력변수의타입을출력 43 System Security Lab@Myongji Univ.
44 변수보기 출력형식지정하기 print 명령은기본적으로 10 진수로출력 2 진수, 16 진수등으로출력하고싶을때 명령어 print/t 변수명 print/o print/d print/u print/x print/f print/c print/s 의미 2진수로출력 8진수로출력부호가있는 10진수로출력부호가없는 10진수로출력 16진수로출력부동소수점형식으로출력문자 (ASCII) 로출력문자열로출력 44 System Security Lab@Myongji Univ.
45 변수보기 변수값을자동으로출력하기 : display step 명령등으로실행할때마다자동으로변수값을출력 display 가설정되면출력번호가붙여진다. 명령어 display [ 변수명 ] display/[ 출력형식 ] [ 변수명 ] undisplay [ 번호 ] disable display [ 번호 ] enable display[ 번호 ] 의미변수값을자동으로출력변수값의출력형식을지정출력설정을없앤다출력을일시중단출력을활성화 (gdb) display p 1: p = 100 (gdb) display array[i] 2: array[i] = (gdb) display gtime.hour 3: gtime.hour = 1 45 System Security Lab@Myongji Univ.
46 변수값설정 변수값설정 : print (gdb) print p $5 = 100 (gdb) print p = 1000 $6 = 1000 (gdb) print p $7 = System Security Lab@Myongji Univ.
47 레지스터보기 레지스터보기명령어의미 info registers (reg) 레지스터들의값을출력 print $[ 레지스터명 ] 특정레지스터의값을출력 (gdb) print $eax $11 = 15 (gdb) print $ebx $12 = System Security Lab@Myongji Univ.
48 스택보기 현재스택내용보기 : info frame (info f) 현재실행중인함수의스택프레임내용을출력 스택프레임의내용 : 함수의매개변수, 지역변수, 반환될주소 전체스택프레임목록보기 : backtrace (bt) bt 전체스택프레임출력 bt N bt -N bt full 최초 N 개의프레임만출력 마지막 N 개의프레임만출력 스택프레임과지역변수를출력 48 System Security Lab@Myongji Univ.
49 스택보기 backtrace (cont.) (gdb) bt #0 0x4207a42b in strlen ( ) from /lib/tls/libc.so.6 #1 0x d in vfprintf ( ) from /lib/tls/libc.so.6 #2 0x4204f112 in printf ( ) from /lib/tls/libc.so.6 #3 0x080483bc in main ( ) at qsort.c:33 #4 0x in libc_start_main ( ) from /lib/tls/libc.so.6 (gdb) 49 System Security Lab@Myongji Univ.
50 스택보기 스택관련명령어 명령어 info frame info args info locals frame [ 프레임번호 ] up down backtrace 의미현재함수의스택프레임내용을출력현재함수의인자를출력현재함수의지역변수를출력해당번호의스택프레임으로변경상위스택프레임으로이동하위스택프레임으로이동모든스택프레임목록을출력 50 System Security Lab@Myongji Univ.
51 메모리내용보기 메모리내용보기 : x x[ 범위 ][ 출력형식 ][ 범위의단위 ] [ 메모리주소 ] 명령어예 x main x 0x80482da 의미 함수 main 의주소에서 4 바이트내용출력 주소 0x80482da 에서 4 바이트내용출력 x/10 main 함수 main 의주소에서 40 바이트내용출력 x/10i main x/10b 0x80482da 함수 main 의주소에서 40 바이트내에있는명령어들을어셈블리어로변환하여출력 주소 0x80482da 에서 10 바이트내용출력 51 System Security Lab@Myongji Univ.
52 메모리내용보기 출력형식심볼의미 t 2진수로출력 o 8진수로출력 d 부호가있는 10진수로출력 u 부호가없는 10진수로출력 x 16진수로출력 f 부동소수점형식으로출력 s 문자열로출력 i 어셈블리어로출력 범위단위심볼의미 b 1 바이트단위 h 2 바이트단위 w 4 바이트단위 g 8 바이트단위 52 System Security Lab@Myongji Univ.
53 메모리내용설정 메모리내용설정 : set set { 타입 }[ 주소 ] = [ 값 ] 타입 : C 언어의데이터타입 (int, double, char 등 ) 명령어예 의미 set {int}0x = 100 주소 0x 번지에 int 크기인 4 바이트공간에 100 을저장 (gdb) set {int}0x = 100 (gdb) x/d 0x x <func+32>: System Security Lab@Myongji Univ.
54 어셈블리코드보기 어셈블리코드보기 : disassemble (disas) 명령어예 disas main disas 0x80482da 의미 함수 main 의어셈블리코드출력 주소 0x80482da 에서어셈블리코드출력 54 System Security Lab@Myongji Univ.
55 프로세스의메모리맵보기 현재디버깅중인프로세스의메모리맵보기 info proc mapping 코어파일로디버깅중인프로세스의메모리맵보기 info files 또는 info target 55 System Security Univ.
56 함수호출및분기 함수호출 : call 명령어예 call qsort call qsort(100) 의미 함수 qsort 호출 함수 qsort 에인자 100 을사용하여호출 분기 : jump 명령어예 jump 10 jump *0x jump qsort 의미 10행으로분기하여실행주소 0x 으로분기하여명령어실행함수 qsort로분기하여실행 56 System Security Lab@Myongji Univ.
57 실습 1. 예제프로그램 (myprog) 을실행하면어디에서수행이멈추었는가? 2. 지역변수를출력하시오. 3. *local_str 값은무엇인가? 4. local_value 의주소값은무엇인가? 5. 현재스택프레임의내용을출력하시오. 57 System Security Univ.
58 실습 (cont.) 6. 현재스택프레임에서 Locals 는어느주소에서시작하는가? 7. 전역변수를출력하시오. 8. 전역변수 global_value 의주소값을출력하시오. 9. 전역변수 global_value 의값을출력하시오. 10.c_Prog 의값을출력하시오. 58 System Security Univ.
59 실습 (cont.) 11.C_prog 의멤버 page 의값을출력하시오. 12.Continue 명령을입력하여수행하면, 어디에서수행이멈추는가? 13. 전체스택의트레이스를출력하시오. 14. 현재스택프레임내용을출력하시오. 15. 현재함수의인자를출력하시오. 59 System Security Univ.
60 실습 (cont.) 16. 이제 next 명령어를이용하여계속수행해보시오. 17. 이제어디에서수행이멈추었는가? 이때출력된메시지는무엇인가? 18. 프로그램의오류는무엇인가? 60 System Security Univ.
61 쓰레드디버깅 쓰레드디버깅관련명령어 명령어예 info threads b [ 행번호 M] thread [ 쓰레드번호 N] thread [ 쓰레드번호 N] 의미 수행중인쓰레드정보를출력 쓰레드 N 의코드에서행번호 M 에정지점설정 현재디버깅쓰레드를 N 으로변경 61 System Security Lab@Myongji Univ.
62 기타 62
63 시스템콜디버깅 strace 프로그램이수행하는중에사용하는시스템콜을출력해준다. 예 ) like 를수행시키고 like 가사용하는시스템호출과시스템콜의반환값을보여줌 $ strace./like 현재수행중인프로세스도확인해볼수있다. 예 ) PID 가 2000 번인프로세스가사용하는시스템호출을보여줌 $ strace p System Security Lab@Myongji Univ.
64 라이브러리호출디버깅 ltrace 프로그램이수행중에호출하는공유라이브러리와라이브러리의반환값을보여준다. $ ltrace./like 사용하는시스템콜까지보고싶다면, $ ltrace S./like 64 System Security Lab@Myongji Univ.
65 디버깅용매크로 디버깅에유용한매크로 LINE : 현재문장번호 FILE : 현재파일이름 DATE : 현재날짜 TIME : 현재시간 #include <stdio.h> main() { } printf( line %d of file %s \n, LINE, FILE ); 65 System Security Lab@Myongji Univ.
66 assert() 를이용한디버깅 assert 함수 #include <assert.h> void assert(expression) expression 의결과가참이아니면오류메시지를출력하고프로그램을종료한다. 오류메시지에는오류가발생한소스파일이름, 함수이름, 줄번호가포함되어디버깅에유용함 만약 NDEBUG를 define하면 assert는수행되지않는다. #define NDEBUG 또는 gcc -DNDEBUG 66 System Security Univ.
vi 사용법
유닉스프로그래밍및실습 gdb 사용법 fprintf 이용 단순디버깅 확인하고자하는코드부분에 fprintf(stderr, ) 를이용하여그지점까지도달했는지여부와관심있는변수의값을확인 여러유형의단순한문제를확인할수있음 그러나자세히살펴보기위해서는디버깅툴필요 int main(void) { int count; long large_no; double real_no; init_vars();
More information강의10
Computer Programming gdb and awk 12 th Lecture 김현철컴퓨터공학부서울대학교 순서 C Compiler and Linker 보충 Static vs Shared Libraries ( 계속 ) gdb awk Q&A Shared vs Static Libraries ( 계속 ) Advantage of Using Libraries Reduced
More information슬라이드 1
-Part3- 제 4 장동적메모리할당과가변인 자 학습목차 4.1 동적메모리할당 4.1 동적메모리할당 4.1 동적메모리할당 배울내용 1 프로세스의메모리공간 2 동적메모리할당의필요성 4.1 동적메모리할당 (1/6) 프로세스의메모리구조 코드영역 : 프로그램실행코드, 함수들이저장되는영역 스택영역 : 매개변수, 지역변수, 중괄호 ( 블록 ) 내부에정의된변수들이저장되는영역
More informationMicrosoft PowerPoint - System Programming Lab Week1.ppt [호환 모드]
System Programming Lab Week 1: Basic Skills for Practice Contents vi Editor 사용법 GCC 컴파일러사용법 Makefile 사용법 GDB 사용법 VI Editor Usage vi 모드 입력모드 : 실제문서를편집하는모드. 명령모드 : 키입력이바로명령이되는모드로서쓴내용을삭제하거나, 복사할때사용. ex 명령모드
More information<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>
리눅스 오류처리하기 2007. 11. 28 안효창 라이브러리함수의오류번호얻기 errno 변수기능오류번호를저장한다. 기본형 extern int errno; 헤더파일 라이브러리함수호출에실패했을때함수예 정수값을반환하는함수 -1 반환 open 함수 포인터를반환하는함수 NULL 반환 fopen 함수 2 유닉스 / 리눅스 라이브러리함수의오류번호얻기 19-1
More informationOCW_C언어 기초
초보프로그래머를위한 C 언어기초 4 장 : 연산자 2012 년 이은주 학습목표 수식의개념과연산자및피연산자에대한학습 C 의알아보기 연산자의우선순위와결합방향에대하여알아보기 2 목차 연산자의기본개념 수식 연산자와피연산자 산술연산자 / 증감연산자 관계연산자 / 논리연산자 비트연산자 / 대입연산자연산자의우선순위와결합방향 조건연산자 / 형변환연산자 연산자의우선순위 연산자의결합방향
More informationPowerPoint 프레젠테이션
Development Environment 2 Jo, Heeseung make make Definition make is utility to maintain groups of programs Object If some file is modified, make detects it and update files related with modified one It
More information< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>
Chap #2 펌웨어작성을위한 C 언어 I http://www.smartdisplay.co.kr 강의계획 Chap1. 강의계획및디지털논리이론 Chap2. 펌웨어작성을위한 C 언어 I Chap3. 펌웨어작성을위한 C 언어 II Chap4. AT89S52 메모리구조 Chap5. SD-52 보드구성과코드메모리프로그래밍방법 Chap6. 어드레스디코딩 ( 매핑 ) 과어셈블리어코딩방법
More informationPowerPoint 프레젠테이션
DEVELOPMENT ENVIRONMENT 2 MAKE Jo, Heeseung MAKE Definition make is utility to maintain groups of programs Object If some file is modified, make detects it and update files related with modified one 2
More information11장 포인터
Dynamic Memory and Linked List 1 동적할당메모리의개념 프로그램이메모리를할당받는방법 정적 (static) 동적 (dynamic) 정적메모리할당 프로그램이시작되기전에미리정해진크기의메모리를할당받는것 메모리의크기는프로그램이시작하기전에결정 int i, j; int buffer[80]; char name[] = data structure"; 처음에결정된크기보다더큰입력이들어온다면처리하지못함
More informationMicrosoft PowerPoint - chap03-변수와데이터형.pptx
#include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num %d\n", num); return 0; } 1 학습목표 의 개념에 대해 알아본다.
More information<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>
연습문제해답 5 4 3 2 1 0 함수의반환값 =15 5 4 3 2 1 0 함수의반환값 =95 10 7 4 1-2 함수의반환값 =3 1 2 3 4 5 연습문제해답 1. C 언어에서의배열에대하여다음중맞는것은? (1) 3차원이상의배열은불가능하다. (2) 배열의이름은포인터와같은역할을한다. (3) 배열의인덱스는 1에서부터시작한다. (4) 선언한다음, 실행도중에배열의크기를변경하는것이가능하다.
More informationMicrosoft PowerPoint - chap02-C프로그램시작하기.pptx
#include int main(void) { int num; printf( Please enter an integer "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을 작성하면서 C 프로그램의
More information금오공대 컴퓨터공학전공 강의자료
C 프로그래밍프로젝트 Chap 14. 포인터와함수에대한이해 2013.10.09. 오병우 컴퓨터공학과 14-1 함수의인자로배열전달 기본적인인자의전달방식 값의복사에의한전달 val 10 a 10 11 Department of Computer Engineering 2 14-1 함수의인자로배열전달 배열의함수인자전달방식 배열이름 ( 배열주소, 포인터 ) 에의한전달 #include
More informationPowerPoint 프레젠테이션
Web server porting 2 Jo, Heeseung Web 을이용한 LED 제어 Web 을이용한 LED 제어프로그램 web 에서데이터를전송받아타겟보드의 LED 를조작하는프로그램을작성하기위해다음과같은소스파일을생성 2 Web 을이용한 LED 제어 LED 제어프로그램작성 8bitled.html 파일을작성 root@ubuntu:/working/web# vi
More informationPoison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3
Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3 Example 3.1 Files 3.2 Source code 3.3 Exploit flow
More informationLab 3. 실습문제 (Single linked list)_해답.hwp
Lab 3. Singly-linked list 의구현 실험실습일시 : 2009. 3. 30. 담당교수 : 정진우 담당조교 : 곽문상 보고서제출기한 : 2009. 4. 5. 학과 : 학번 : 성명 : 실습과제목적 : 이론시간에배운 Singly-linked list를실제로구현할수있다. 실습과제내용 : 주어진소스를이용해 Singly-linked list의각함수를구현한다.
More informationMicrosoft PowerPoint - chap06-2pointer.ppt
2010-1 학기프로그래밍입문 (1) chapter 06-2 참고자료 포인터 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 포인터의정의와사용 변수를선언하는것은메모리에기억공간을할당하는것이며할당된이후에는변수명으로그기억공간을사용한다. 할당된기억공간을사용하는방법에는변수명외에메모리의실제주소값을사용하는것이다.
More informationgdb 사용법 Debugging Debug라는말은 bug를없앤다는말이다. Bug란, 컴퓨터프로그램상의논리적오류를말하며, 이것을찾아해결하는과정이바로, debugging이다. 초기컴퓨터들은실제벌레가컴퓨터에들어가서오작동을일으키는경우가있었다고하며, 여기서 debug 이라는말이
gdb 사용법 Debugging Debug라는말은 bug를없앤다는말이다. Bug란, 컴퓨터프로그램상의논리적오류를말하며, 이것을찾아해결하는과정이바로, debugging이다. 초기컴퓨터들은실제벌레가컴퓨터에들어가서오작동을일으키는경우가있었다고하며, 여기서 debug 이라는말이나왔다한다. Debugging을하는가장원초적방법은프로그램소스를눈으로따라가며, 머리로실행시켜논리적오류를찾아내는것이다.
More informationMicrosoft PowerPoint 자바-기본문법(Ch2).pptx
자바기본문법 1. 기본사항 2. 자료형 3. 변수와상수 4. 연산자 1 주석 (Comments) 이해를돕기위한설명문 종류 // /* */ /** */ 활용예 javadoc HelloApplication.java 2 주석 (Comments) /* File name: HelloApplication.java Created by: Jung Created on: March
More information학습목차 2.1 다차원배열이란 차원배열의주소와값의참조
- Part2- 제 2 장다차원배열이란무엇인가 학습목차 2.1 다차원배열이란 2. 2 2 차원배열의주소와값의참조 2.1 다차원배열이란 2.1 다차원배열이란 (1/14) 다차원배열 : 2 차원이상의배열을의미 1 차원배열과다차원배열의비교 1 차원배열 int array [12] 행 2 차원배열 int array [4][3] 행 열 3 차원배열 int array [2][2][3]
More informationMicrosoft PowerPoint - chap04-연산자.pptx
int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); } 1 학습목표 수식의 개념과 연산자, 피연산자에 대해서 알아본다. C의 를 알아본다. 연산자의 우선 순위와 결합 방향에
More informationMicrosoft PowerPoint - ch07 - 포인터 pm0415
2015-1 프로그래밍언어 7. 포인터 (Pointer), 동적메모리할당 2015 년 4 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) Outline 포인터 (pointer) 란? 간접참조연산자
More informationhlogin2
0x02. Stack Corruption off-limit Kernel Stack libc Heap BSS Data Code off-limit Kernel Kernel : OS Stack libc Heap BSS Data Code Stack : libc : Heap : BSS, Data : bss Code : off-limit Kernel Kernel : OS
More informationMicrosoft PowerPoint - chap01-C언어개요.pptx
#include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 프로그래밍의 기본 개념을
More information11장 포인터
누구나즐기는 C 언어콘서트 제 9 장포인터 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습한다. 포인터란? 포인터 (pointer): 주소를가지고있는변수 메모리의구조 변수는메모리에저장된다. 메모리는바이트단위로액세스된다. 첫번째바이트의주소는 0, 두번째바이트는 1, 변수와메모리
More informationMicrosoft PowerPoint - chap10-함수의활용.pptx
#include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 중 값에 의한 전달 방법과
More informationchap 5: Trees
5. Threaded Binary Tree 기본개념 n 개의노드를갖는이진트리에는 2n 개의링크가존재 2n 개의링크중에 n + 1 개의링크값은 null Null 링크를다른노드에대한포인터로대체 Threads Thread 의이용 ptr left_child = NULL 일경우, ptr left_child 를 ptr 의 inorder predecessor 를가리키도록변경
More information임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과
임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 System call table and linkage v Ref. http://www.ibm.com/developerworks/linux/library/l-system-calls/ - 2 - Young-Jin Kim SYSCALL_DEFINE 함수
More information이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다. 2
제 17 장동적메모리와연결리스트 유준범 (JUNBEOM YOO) Ver. 2.0 jbyoo@konkuk.ac.kr http://dslab.konkuk.ac.kr 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다. 이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다.
More information[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi
2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Function) 1. 함수의개념 입력에대해적절한출력을발생시켜주는것 내가 ( 프로그래머 ) 작성한명령문을연산, 처리, 실행해주는부분 ( 모듈 ) 자체적으로실행되지않으며,
More informationPowerPoint 프레젠테이션
KeyPad Device Control - Device driver Jo, Heeseung HBE-SM5-S4210 에는 16 개의 Tack Switch 를사용하여 4 행 4 열의 Keypad 가장착 4x4 Keypad 2 KeyPad 를제어하기위하여 FPGA 내부에 KeyPad controller 가구현 KeyPad controller 16bit 로구성된
More informationMicrosoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100
2015-1 프로그래밍언어 9. 연결형리스트, Stack, Queue 2015 년 5 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) 연결리스트 (Linked List) 연결리스트연산 Stack
More informationPowerPoint 프레젠테이션
Chapter 06 반복문 01 반복문의필요성 02 for문 03 while문 04 do~while문 05 기타제어문 반복문의의미와필요성을이해한다. 대표적인반복문인 for 문, while 문, do~while 문의작성법을 알아본다. 1.1 반복문의필요성 반복문 동일한내용을반복하거나일정한규칙으로반복하는일을수행할때사용 프로그램을좀더간결하고실제적으로작성할수있음.
More informationPowerPoint 프레젠테이션
System Software Experiment 1 Lecture 5 - Array Spring 2019 Hwansoo Han (hhan@skku.edu) Advanced Research on Compilers and Systems, ARCS LAB Sungkyunkwan University http://arcs.skku.edu/ 1 배열 (Array) 동일한타입의데이터가여러개저장되어있는저장장소
More information컴파일러
YACC 응용예 Desktop Calculator 7/23 Lex 입력 수식문법을위한 lex 입력 : calc.l %{ #include calc.tab.h" %} %% [0-9]+ return(number) [ \t] \n return(0) \+ return('+') \* return('*'). { printf("'%c': illegal character\n",
More informationMicrosoft PowerPoint - chap12-고급기능.pptx
#include int main(void) int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; 1 학습목표 가 제공하는 매크로 상수와 매크로
More informationK&R2 Reference Manual 번역본
typewriter structunion struct union if-else if if else if if else if if if if else else ; auto register static extern typedef void char short int long float double signed unsigned const volatile { } struct
More informationMicrosoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt
변수와상수 1 변수란무엇인가? 변수 : 정보 (data) 를저장하는컴퓨터내의특정위치 ( 임시저장공간 ) 메모리, register 메모리주소 101 번지 102 번지 변수의크기에따라 주로 byte 단위 메모리 2 기본적인변수형및변수의크기 변수의크기 해당컴퓨터에서는항상일정 컴퓨터마다다를수있음 short
More informationKNK_C_05_Pointers_Arrays_structures_summary_v02
Pointers and Arrays Structures adopted from KNK C Programming : A Modern Approach 요약 2 Pointers and Arrays 3 배열의주소 #include int main(){ int c[] = {1, 2, 3, 4}; printf("c\t%p\n", c); printf("&c\t%p\n",
More information<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >
10주차 문자 LCD 의인터페이스회로및구동함수 Next-Generation Networks Lab. 5. 16x2 CLCD 모듈 (HY-1602H-803) 그림 11-18 19 핀설명표 11-11 번호 분류 핀이름 레벨 (V) 기능 1 V SS or GND 0 GND 전원 2 V Power DD or V CC +5 CLCD 구동전원 3 V 0 - CLCD 명암조절
More informationMicrosoft PowerPoint - chap05-제어문.pptx
int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); 1 학습목표 제어문인,, 분기문에 대해 알아본다. 인 if와 switch의 사용 방법과 사용시 주의사항에 대해 알아본다.
More informationMicrosoft PowerPoint - additional01.ppt [호환 모드]
1.C 기반의 C++ part 1 함수 오버로딩 (overloading) 디폴트매개변수 (default parameter) 인-라인함수 (in-line function) 이름공간 (namespace) Jong Hyuk Park 함수 Jong Hyuk Park 함수오버로딩 (overloading) 함수오버로딩 (function overloading) C++ 언어에서는같은이름을가진여러개의함수를정의가능
More informationLab 4. 실습문제 (Circular singly linked list)_해답.hwp
Lab 4. Circular singly-linked list 의구현 실험실습일시 : 2009. 4. 6. 담당교수 : 정진우 담당조교 : 곽문상 보고서제출기한 : 2009. 4. 12. 학과 : 학번 : 성명 : 실습과제목적 : 이론시간에배운 Circular Singly-linked list를실제로구현할수있다. 실습과제내용 : 주어진소스를이용해 Circular
More information슬라이드 1
정적메모리할당 (Static memory allocation) 일반적으로프로그램의실행에필요한메모리 ( 변수, 배열, 객체등 ) 는컴파일과정에서결정되고, 실행파일이메모리에로드될때할당되며, 종료후에반환됨 동적메모리할당 (Dynamic memory allocation) 프로그램의실행중에필요한메모리를할당받아사용하고, 사용이끝나면반환함 - 메모리를프로그램이직접관리해야함
More informationuntitled
시스템소프트웨어 : 운영체제, 컴파일러, 어셈블러, 링커, 로더, 프로그래밍도구등 소프트웨어 응용소프트웨어 : 워드프로세서, 스프레드쉬트, 그래픽프로그램, 미디어재생기등 1 n ( x + x +... + ) 1 2 x n 00001111 10111111 01000101 11111000 00001111 10111111 01001101 11111000
More informationChapter 4. LISTS
C 언어에서리스트구현 리스트의생성 struct node { int data; struct node *link; ; struct node *ptr = NULL; ptr = (struct node *) malloc(sizeof(struct node)); Self-referential structure NULL: defined in stdio.h(k&r C) or
More informationC 프로그래밍 언어 입문 C 프로그래밍 언어 입문 김명호저 숭실대학교 출판국 머리말..... C, C++, Java, Fortran, Python, Ruby,.. C. C 1972. 40 C.. C. 1999 C99. C99. C. C. C., kmh ssu.ac.kr.. ,. 2013 12 Contents 1장 프로그래밍 시작 1.1 C 10 1.2 12
More informationuntitled
int i = 10; char c = 69; float f = 12.3; int i = 10; char c = 69; float f = 12.3; printf("i : %u\n", &i); // i printf("c : %u\n", &c); // c printf("f : %u\n", &f); // f return 0; i : 1245024 c : 1245015
More information설계란 무엇인가?
금오공과대학교 C++ 프로그래밍 jhhwang@kumoh.ac.kr 컴퓨터공학과 황준하 5 강. 배열, 포인터, 참조목차 배열 포인터 C++ 메모리구조 주소연산자 포인터 포인터연산 배열과포인터 메모리동적할당 문자열 참조 1 /20 5 강. 배열, 포인터, 참조배열 배열 같은타입의변수여러개를하나의변수명으로처리 int Ary[10]; 총 10 개의변수 : Ary[0]~Ary[9]
More information02장.배열과 클래스
---------------- DATA STRUCTURES USING C ---------------- CHAPTER 배열과구조체 1/20 많은자료의처리? 배열 (array), 구조체 (struct) 성적처리프로그램에서 45 명의성적을저장하는방법 주소록프로그램에서친구들의다양한정보 ( 이름, 전화번호, 주소, 이메일등 ) 를통합하여저장하는방법 홍길동 이름 :
More informationInfinity(∞) Strategy
반복제어 표월성 passwd74@cherub.sungkyul.edu 개요 for() 문 break문과 continue문 while문 do-while문 for() 문 for() 문형식 for( 표현식1; 표현식2; 표현식3) 여러문장들 ; 표현식 1 : 초기화 (1 번만수행 ) 표현식 2 : 반복문수행조건 ( 없으면무한반복 ) 표현식 3 : 반복문수행횟수 for()
More informationMicrosoft PowerPoint - chap13-입출력라이브러리.pptx
#include int main(void) int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; 1 학습목표 스트림의 기본 개념을 알아보고,
More information<4D F736F F F696E74202D20C1A63132B0AD20B5BFC0FB20B8DEB8F0B8AEC7D2B4E7>
제14장 동적 메모리 할당 Dynamic Allocation void * malloc(sizeof(char)*256) void * calloc(sizeof(char), 256) void * realloc(void *, size_t); Self-Referece NODE struct selfref { int n; struct selfref *next; }; Linked
More informationMicrosoft PowerPoint - chap-11.pptx
쉽게풀어쓴 C 언어 Express 제 11 장포인터 컴퓨터프로그래밍기초 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습한다. 컴퓨터프로그래밍기초 2 포인터란? 포인터 (pointer): 주소를가지고있는변수 컴퓨터프로그래밍기초 3 메모리의구조 변수는메모리에저장된다. 메모리는바이트단위로액세스된다.
More information버퍼오버플로우-왕기초편 10. 메모리를 Hex dump 뜨기 앞서우리는버퍼오버플로우로인해리턴어드레스 (return address) 가변조될수있음을알았습니다. 이제곧리턴어드레스를원하는값으로변경하는실습을해볼것인데요, 그전에앞서, 메모리에저장된값들을살펴보는방법에대해배워보겠습
앞서우리는버퍼오버플로우로인해리턴어드레스 (return address) 가변조될수있음을알았습니다. 이제곧리턴어드레스를원하는값으로변경하는실습을해볼것인데요, 그전에앞서, 메모리에저장된값들을살펴보는방법에대해배워보겠습니다. 여러분모두 Windows 에서 hex editor(hex dump, hex viewer) 라는것을사용해보셨을겁니다. 바로바이너리파일을 16 진수
More informationMicrosoft PowerPoint - C프로그래밍-chap03.ppt [호환 모드]
Chapter 03 변수와자료형 2009 한국항공대학교항공우주기계공학부 (http://mercury.kau.ac.kr/sjkwon) 1 변수와자료유형 변수 프로그램에서자료값을임시로기억할수있는저장공간을변수 (variables) 변수 (Variables) 는컴퓨터의메모리인 RAM(Random Access Memory) 에저장 물건을담는박스라고생각한다면박스의크기에따라담을물건이제한됨
More informationFrama-C/JESSIS 사용법 소개
Frama-C 프로그램검증시스템소개 박종현 @ POSTECH PL Frama-C? C 프로그램대상정적분석도구 플러그인구조 JESSIE Wp Aorai Frama-C 커널 2 ROSAEC 2011 동계워크샵 @ 통영 JESSIE? Frama-C 연역검증플러그인 프로그램분석 검증조건추출 증명 Hoare 논리에기초한프로그램검증도구 사용법 $ frama-c jessie
More information<4D F736F F F696E74202D20C1A632C0E520C7C1B7CEB1D7B7A5B0B3B9DFB0FAC1A4>
쉽게풀어쓴 C 언어 Express 제 2 장프로그램개발과정 통합개발환경 통합개발환경 (IDE: integrated development environment) 에디터 + 컴파일러 + 디버거 Visual C++: 이클립스 (eclipse): Dev-C++: 마이크로소프트제작 오픈소스프로젝트 오픈소스프로젝트 통합개발환경의종류 비주얼 C++(Visual C++)
More informationA Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning
C Programming Practice (II) Contents 배열 문자와문자열 구조체 포인터와메모리관리 구조체 2/17 배열 (Array) (1/2) 배열 동일한자료형을가지고있으며같은이름으로참조되는변수들의집합 배열의크기는반드시상수이어야한다. type var_name[size]; 예 ) int myarray[5] 배열의원소는원소의번호를 0 부터시작하는색인을사용
More informationMicrosoft PowerPoint - 제11장 포인터
쉽게풀어쓴 C 언어 Express 제 11 장포인터 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습한다. 포인터란? 포인터 (pointer): 주소를가지고있는변수 1003 1004 1005 영화관 1002 1006 1001 포인터 (pointer) 1007 메모리의구조
More informationMicrosoft PowerPoint - 제11장 포인터(강의)
쉽게풀어쓴 C 언어 Express 제 11 장포인터 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습한다. 포인터란? 포인터 (pointer): 주소를가지고있는변수 1003 1004 1005 영화관 1002 1006 1001 포인터 (pointer) 1007 메모리의구조
More information1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout << " 양수입력 : "; cin >> *p; if (*p <= 0) cout << " 양수를입력해야합니다 " << endl; return; 동적할
15 장기타주제들 auto_ptr 변환함수 cast 연산자에의한명시적형변환실행시간타입정보알아내기 (RTTI) C++ 프로그래밍입문 1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout > *p; if (*p
More informationMicrosoft PowerPoint - chap11-포인터의활용.pptx
#include int main(void) int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; 1 학습목표 포인터를 사용하는 다양한 방법에
More information쉽게 풀어쓴 C 프로그래밍
제 3 장함수와문자열 1. 함수의기본적인개념을이해한다. 2. 인수와매개변수의개념을이해한다. 3. 함수의인수전달방법 2가지를이해한다 4. 중복함수를이해한다. 5. 디폴트매개변수를이해한다. 6. 문자열의구성을이해한다. 7. string 클래스의사용법을익힌다. 이번장에서만들어볼프로그램 함수란? 함수선언 함수호출 예제 #include using
More information제 11 장포인터 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.
제 11 장포인터 유준범 (JUNBEOM YOO) Ver. 2.0 jbyoo@konkuk.ac.kr http://dslab.konkuk.ac.kr 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다. 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습합니다.
More informationPowerPoint 프레젠테이션
Chapter 10 포인터 01 포인터의기본 02 인자전달방법 03 포인터와배열 04 포인터와문자열 변수의주소를저장하는포인터에대해알아본다. 함수의인자를값과주소로전달하는방법을알아본다. 포인터와배열의관계를알아본다. 포인터와문자열의관계를알아본다. 1.1 포인터선언 포인터선언방법 자료형 * 변수명 ; int * ptr; * 연산자가하나이면 1 차원포인터 1 차원포인터는일반변수의주소를값으로가짐
More information목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2
제 8 장. 포인터 목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2 포인터의개요 포인터란? 주소를변수로다루기위한주소변수 메모리의기억공간을변수로써사용하는것 포인터변수란데이터변수가저장되는주소의값을 변수로취급하기위한변수 C 3 포인터의개요 포인터변수및초기화 * 변수데이터의데이터형과같은데이터형을포인터 변수의데이터형으로선언 일반변수와포인터변수를구별하기위해
More informationPowerPoint Presentation
객체지향프로그래밍 클래스, 객체, 메소드 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 필드만있는클래스 텔레비젼 2 예제 1. 필드만있는클래스 3 예제 2. 여러개의객체생성하기 4 5 예제 3. 메소드가추가된클래스 public class Television { int channel; // 채널번호 int volume; // 볼륨 boolean
More informationPowerPoint 프레젠테이션
Lecture 02 프로그램구조및문법 Kwang-Man Ko kkmam@sangji.ac.kr, compiler.sangji.ac.kr Department of Computer Engineering Sang Ji University 2018 자바프로그램기본구조 Hello 프로그램구조 sec01/hello.java 2/40 자바프로그램기본구조 Hello 프로그램구조
More information쉽게
Power Java 제 4 장자바프로그래밍기초 이번장에서학습할내용 자바프로그램에대한기초사항을학습 자세한내용들은추후에. Hello.java 프로그램 주석 주석 (comment): 프로그램에대한설명을적어넣은것 3 가지타입의주석 클래스 클래스 (class): 객체를만드는설계도 ( 추후에학습 ) 자바프로그램은클래스들로구성된다. 그림 4-1. 자바프로그램의구조 클래스정의
More informationadfasdfasfdasfasfadf
C 4.5 Source code Pt.3 ISL / 강한솔 2019-04-10 Index Tree structure Build.h Tree.h St-thresh.h 2 Tree structure *Concpets : Node, Branch, Leaf, Subtree, Attribute, Attribute Value, Class Play, Don't Play.
More information프로그래밍개론및실습 2015 년 2 학기프로그래밍개론및실습과목으로본내용은강의교재인생능출판사, 두근두근 C 언어수업, 천인국지음을발췌수정하였음
프로그래밍개론및실습 2015 년 2 학기프로그래밍개론및실습과목으로본내용은강의교재인생능출판사, 두근두근 C 언어수업, 천인국지음을발췌수정하였음 CHAPTER 9 둘중하나선택하기 관계연산자 두개의피연산자를비교하는연산자 결과값은참 (1) 아니면거짓 (0) x == y x 와 y 의값이같은지비교한다. 관계연산자 연산자 의미 x == y x와 y가같은가? x!= y
More information설계란 무엇인가?
금오공과대학교 C++ 프로그래밍 jhhwang@kumoh.ac.kr 컴퓨터공학과 황준하 6 강. 함수와배열, 포인터, 참조목차 함수와포인터 주소값의매개변수전달 주소의반환 함수와배열 배열의매개변수전달 함수와참조 참조에의한매개변수전달 참조의반환 프로그래밍연습 1 /15 6 강. 함수와배열, 포인터, 참조함수와포인터 C++ 매개변수전달방법 값에의한전달 : 변수값,
More informationA Hierarchical Approach to Interactive Motion Editing for Human-like Figures
단일연결리스트 (Singly Linked List) 신찬수 연결리스트 (linked list)? tail 서울부산수원용인 null item next 구조체복습 struct name_card { char name[20]; int date; } struct name_card a; // 구조체변수 a 선언 a.name 또는 a.date // 구조체 a의멤버접근 struct
More informationMicrosoft PowerPoint - chap06-1Array.ppt
2010-1 학기프로그래밍입문 (1) chapter 06-1 참고자료 배열 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 배열의선언과사용 같은형태의자료형이많이필요할때배열을사용하면효과적이다. 배열의선언 배열의사용 배열과반복문 배열의초기화 유연성있게배열다루기 한빛미디어
More informationPowerPoint 프레젠테이션
Chapter 15 고급프로그램을 만들기위한 C... 1. main( ) 함수의숨겨진이야기 2. 헤더파일 3. 전처리문과예약어 1. main( ) 함수의숨겨진이야기 main( ) 함수의매개변수 [ 기본 14-1] main( ) 함수에매개변수를사용한예 1 01 #include 02 03 int main(int argc, char* argv[])
More informationMicrosoft PowerPoint - C++ 5 .pptx
C++ 언어프로그래밍 한밭대학교전자. 제어공학과이승호교수 연산자중복 (operator overloading) 이란? 2 1. 연산자중복이란? 1) 기존에미리정의되어있는연산자 (+, -, /, * 등 ) 들을프로그래머의의도에맞도록새롭게정의하여사용할수있도록지원하는기능 2) 연산자를특정한기능을수행하도록재정의하여사용하면여러가지이점을가질수있음 3) 하나의기능이프로그래머의의도에따라바뀌어동작하는다형성
More information금오공대 컴퓨터공학전공 강의자료
C 프로그래밍프로젝트 Chap 13. 포인터와배열! 함께이해하기 2013.10.02. 오병우 컴퓨터공학과 13-1 포인터와배열의관계 Programming in C, 정재은저, 사이텍미디어. 9 장참조 ( 교재의 13-1 은읽지말것 ) 배열이름의정체 배열이름은 Compile 시의 Symbol 로서첫번째요소의주소값을나타낸다. Symbol 로서컴파일시에만유효함 실행시에는메모리에잡히지않음
More information1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y; public : CPoint(int a
6 장복사생성자 객체의생성과대입객체의값에의한전달복사생성자디폴트복사생성자복사생성자의재정의객체의값에의한반환임시객체 C++ 프로그래밍입문 1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y;
More informationA Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning
Basic Data Structures, Make, GDB Contents Data Structures Linked List Tree Hash Make 사용법 디버거 (gdb) 사용법 2/17 Reference The C Programming language, Brian W. Kernighan, Dennis M. Ritchie, Prentice-Hall Teach
More informationC언어 및 실습 C Language and Practice
C언어 및 실습 C Language and Practice Chap. 2 : 변수의 영역 동국대학교 멀티미디어공학과 Young-Sik Jeong C 언어메모리구조 지역변수들이저장되는곳. 정확히는지역변수와그에따른환경이같이저장된다. 복귀주소와호출함수의환경이저장된다. 동적기억장소를위한공간. 프로그램이실행되는중간에필요에의해서할당받는메모리영역을통칭한다. 크기가정해져있지않고유동적이다.
More information61 62 63 64 234 235 p r i n t f ( % 5 d :, i+1); g e t s ( s t u d e n t _ n a m e [ i ] ) ; if (student_name[i][0] == \ 0 ) i = MAX; p r i n t f (\ n :\ n ); 6 1 for (i = 0; student_name[i][0]!= \ 0&&
More informationOCW_C언어 기초
초보프로그래머를위한 C 언어기초 3 장 : 변수와데이터형 2012 년 이은주 학습목표 변수와상수의개념에대해알아본다. 리터럴상수, 매크로상수, const 변수에대해알아본 다. C 언어의데이터형에대해알아본다. 2 목차 변수와상수 변수 상수 데이터형 문자형 정수형 실수형 sizeof 연산자 3 변수와상수 변수 : 값이변경될수있는데이터 상수 : 값이변경될수없는데이터
More information1 장 C 언어복습 표준입출력배열포인터배열과포인터함수 const와포인터구조체컴파일러사용방법 C++ 프로그래밍입문
1 장 C 언어복습 표준입출력배열포인터배열과포인터함수 const와포인터구조체컴파일러사용방법 C++ 프로그래밍입문 1. 표준입출력 표준입출력 입력 : 키보드, scanf 함수 출력 : 모니터, printf 함수문제 : 정수값 2개를입력받고두값사이의값들을더하여출력하라. #include int main(void) int Num1, Num2; int
More information비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2
비트연산자 1 1 비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2 진수법! 2, 10, 16, 8! 2 : 0~1 ( )! 10 : 0~9 ( )! 16 : 0~9, 9 a, b,
More informationBMP 파일 처리
BMP 파일처리 김성영교수 금오공과대학교 컴퓨터공학과 학습내용 영상반전프로그램제작 2 Inverting images out = 255 - in 3 /* 이프로그램은 8bit gray-scale 영상을입력으로사용하여반전한후동일포맷의영상으로저장한다. */ #include #include #define WIDTHBYTES(bytes)
More informationMicrosoft PowerPoint - Chapter_04.pptx
프로그래밍 1 1 Chapter 4. Constant and Basic Data Types April, 2016 Dept. of software Dankook University http://embedded.dankook.ac.kr/~baeksj 이장의강의목표 2 기본자료형문자표현방식과문자자료형상수자료형변환 기본자료형 (1/8) 3 변수 (Variables)
More information중간고사
중간고사 예제 1 사용자로부터받은두개의숫자 x, y 중에서큰수를찾는알고리즘을의사코드로작성하시오. Step 1: Input x, y Step 2: if (x > y) then MAX
More informationPowerPoint 프레젠테이션
7-Segment Device Control - Device driver Jo, Heeseung HBE-SM5-S4210 의 M3 Module 에는 6 자리를가지는 7-Segment 모듈이아래그림처럼실장 6 Digit 7-Segment 2 6-Digit 7-Segment LED controller 16비트로구성된 2개의레지스터에의해제어 SEG_Sel_Reg(Segment
More informationPowerPoint 프레젠테이션
7-Segment Device Control - Device driver Jo, Heeseung HBE-SM5-S4210 의 M3 Module 에는 6 자리를가지는 7-Segment 모듈이아래그림처럼실장 6 Digit 7-Segment 2 6-Digit 7-Segment LED Controller 16비트로구성된 2개의레지스터에의해제어 SEG_Sel_Reg(Segment
More informationMicrosoft PowerPoint - Java7.pptx
HPC & OT Lab. 1 HPC & OT Lab. 2 실습 7 주차 Jin-Ho, Jang M.S. Hanyang Univ. HPC&OT Lab. jinhoyo@nate.com HPC & OT Lab. 3 Component Structure 객체 (object) 생성개념을이해한다. 외부클래스에대한접근방법을이해한다. 접근제어자 (public & private)
More information<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729>
8주차중간고사 ( 인터럽트및 A/D 변환기문제및풀이 ) Next-Generation Networks Lab. 외부입력인터럽트예제 문제 1 포트 A 의 7-segment 에초시계를구현한다. Tact 스위치 SW3 을 CPU 보드의 PE4 에연결한다. 그리고, SW3 을누르면하강 에지에서초시계가 00 으로초기화된다. 동시에 Tact 스위치 SW4 를 CPU 보드의
More informationuntitled
- -, (insert) (delete) - - (insert) (delete) (top ) - - (insert) (rear) (delete) (front) A A B top A B C top push(a) push(b) push(c) A B top pop() top A B D push(d) top #define MAX_STACK_SIZE 100 int
More information제4장 기본 의미구조 (Basic Semantics)
제 4 장블록및유효범위 Reading Chap. 5 숙대창병모 1 4.1 변수선언및유효범위 숙대창병모 2 변수선언과유효범위 변수선언 Declaration before Use! 대부분의언어에서변수는사용전에먼저선언해야한다. 변수의유효범위 (scope) 선언된변수가유효한 ( 사용될수있는 ) 프로그램내의범위 / 영역 변수이름뿐아니라함수등다른이름도생각해야한다. 정적유효범위
More informationChapter 4. LISTS
6. 동치관계 (Equivalence Relations) 동치관계 reflexive, symmetric, transitive 성질을만족 "equal to"(=) 관계는동치관계임. x = x x = y 이면 y = x x = y 이고 y = z 이면 x = z 동치관계를이용하여집합 S 를 동치클래스 로분할 동일한클래스내의원소 x, y 에대해서는 x y 관계성립
More informationKEY 디바이스 드라이버
KEY 디바이스드라이버 임베디드시스템소프트웨어 I (http://et.smu.ac.kr et.smu.ac.kr) 차례 GPIO 및 Control Registers KEY 하드웨어구성 KEY Driver 프로그램 key-driver.c 시험응용프로그램 key-app.c KEY 디바이스드라이버 11-2 GPIO(General-Purpose Purpose I/O)
More informationC 프로그램의 기본
C 프로그램의기본 목차 C 프로그램의구성요소 주석 main 함수 출력 C 언어의입력과출력 변수 printf 함수 scanf 함수 2 예제 2-1 : 첫번째 C 프로그램 3 2.1.1 주석 주석의용도 프로그램에대한설명 프로그램전체에대한대략적인정보를제공 프로그램수행에영향을미치지않는요소 4 2.1.1 주석 주석사용방법 /* 과 */ 을이용한여러줄주석 // 을이용한한줄주석
More information(Asynchronous Mode) ( 1, 5~8, 1~2) & (Parity) 1 ; * S erial Port (BIOS INT 14H) - 1 -
(Asynchronous Mode) - - - ( 1, 5~8, 1~2) & (Parity) 1 ; * S erial Port (BIOS INT 14H) - 1 - UART (Univ ers al As y nchronous Receiver / T rans mitter) 8250A 8250A { COM1(3F8H). - Line Control Register
More informationMicrosoft PowerPoint - ch10 - 이진트리, AVL 트리, 트리 응용 pm0600
균형이진탐색트리 -VL Tree delson, Velskii, Landis에의해 1962년에제안됨 VL trees are balanced n VL Tree is a binary search tree such that for every internal node v of T, the heights of the children of v can differ by at
More information