LINUX EXERCISE
Jo, Heeseung
2
Download Programs
Download VMWare player
• http://www.vmware.com > download > workstation player
Download Ubuntu iso file
• http://ubuntu.com
- server, 64bit version
• http://cslab.cbnu.ac.kr/_down/ubuntu-18.04.2-live-server-amd64.iso
• http://mirror.kakao.com/ubuntu-releases/18.04/ubuntu-18.04.3-live-server-amd64.iso
3
실습: Vmware 설치
실습목표
• Vmware를 설치
결과 화면
4
가상머신의 겉모양
가상머신이 생성된 화면
5
실습: 가상머신 생성
실습목표
• 앞으로 계속 사용할 가상머신을 생성
가상머신이 생성된 결과화면
네트워크는 반드시"Vmnet8(NAT)"로 지정
7
실습: Linux ISO 파일 다운로드
실습목표
• 인터넷에서 Linux 설치용 ISO 파일을 다운로드
다운로드 사이트 예
• http://www.kernel.org
• http://mirrors.kernel.org
• http://fedoraproject.org/
• http://www.centos.org/
• http://www.ubuntu.com/
8
실습: ISO 파일 설치
실습목표
• 물리적인 CD/DVD 대신에 ISO파일을 사용
가상머신에서 CD/DVD 대신 ISO 파일 사용 화면
9
실습: Ubuntu 설치
실습목표
• 기본적인 설치를 진행
• Ubuntu 18.04 live server amd64 버전 설치
• 로그인 후 인터넷이 되는지 확인
• 설치 시 한글로 설치하지 말 것 (영어 사용)
• 기본 설정
- Processors: 4
- Memory: 2GB
- Storage: 40GB (single file)
- Network Adapter: NAT
EXTRA
Jo, Heeseung
11
가상머신(Virtual Machine)의 소개
지금 쓰는 Windows를 그대로 사용하면서도 여러 대의 리눅스 서버를운영하는 효과를 내는 프로그램
1대의 PC에서 추가로 3개의 가상머신을 구동한 화면
12
Virtual Machines
Host computer emulates guest operating system and machine resources
• Improved isolation of multiple guests
• Avoids security and reliability problems
• Aids sharing of resources
Virtualization has some performance impact
• Feasible with modern high-performance computers
Examples
• IBM VM/370 (1970s technology!)
• VMWare
• Xen
• Linux KVM
• Microsoft Hyper-V
13
Consolidation using Virtualization
Server consolidation
• Multiple OSes in a physical machine
Hardware
Virtual Machine Monitor
Windows
App App
App
Linux
App App
App
Linux
App App
14
Virtualization Benefits
High machine utilization
Low ownership cost
Live migration, Easy management
Hardware
Windows
App App
App
Hardware
Windows
App App
App
Hardware
Windows
App App
App
Hardware
Windows
App App
App
Hardware
Windows
App App
App
Hardware
Windows
App App
App
Hardware
Windows
App App
App
Hardware
Windows
App App
App
Hardware
Windows
App App
App
Hardware
Virtual Machine Monitor
15
Software Architecture
OS
Hardware
Application
Application
Application
Application
Application
Application
Physical
CPU
Physical
Memory
Physical
Network
Physical
Block
Device
Application
Application
Application
Application
Application
Application
16
Virtualization Architecture
VMMDomain0
Control
Interface
Hardware
Guest OS
Domain0
Control
Software
Guest OS
DomainU
Application
Guest OS
DomainU
Guest OS
DomainU
Virtual
CPU
Virtual
Memory
Virtual
Network
Virtual
Block
Device
Application
Application
Application
Application
Application
Physical
CPU
Physical
Memory
Physical
Network
Physical
Block
Device
17
가상머신과 가상머신 프로그램의 개념 (1)
가상머신 모니터 (Virtual Machine Monitor, aka Hypervisor)
• 컴퓨터에 설치된 운영체제(호스트OS)안에 가상의 컴퓨터를 만들고, 그안에 또 다른 운영체제(게스트OS)를 설치/운영할 수 있도록 제작된프로그램
Host OS vs. 가상머신(VM) vs. Guest OS
• Host OS: PC에 이미 설치되어 있는 Windows
• 가상머신: Host OS위에서 동작하는 가상의 PC
• Guest OS: 가상머신에서 동작하는 운영체제
멀티부팅(Multi-Booting)과는 개념이 다름
18
가상머신과 가상머신 프로그램의 개념 (2)
1대 PC에1개 OS
1대 PC에4개 OS
19
Vmware 핫 키
호스트OS와 게스트 OS 사이의 초점이동 기본 키
• Ctrl + Alt
20
리눅스 개요와 탄생
리눅스 = 무료 유닉스
1991년 '리누스 토발즈'가 버전 0.01을최초로 작성
1992년 0.02 버전을 공개하면서 시작
리누스 토발즈는 커널(Kernel)만 개발
21
GNU 프로젝트
Richard Stallman
• 1984년 GNU 프로젝트가 시작
• 목표는 '모두가 공유할 수 있는 소프트웨어'를만드는 것
• 1985년 자유 소프트웨어 재단(FSF, Free Software Foundation) 설립
FSF
• GNU 프로젝트에서 제작한 소프트웨어를 지원함으로써 컴퓨터 프로그램의복제, 변경, 소스 코드의 사용에 대한 제한을 철폐
• GPL(General Public License)을 따름
- GPL은 자유 소프트웨어(Free Software)의 수정과 공유의 자유를 보장
• 프리웨어(Freeware, 무료 소프트웨어)라는 개념을 뛰어넘어서 진정한자유(Freedom)에 대한 개념
• 자유 소프트웨어는 심지어 무료로 얻은 소프트웨어를 유상으로 판매할자유도 보장
22
커널
http://www.kernel.org 에서 최신버전을 다운로드
커널 변천사
커널 버전의 의미 (예: linux-2.6.30.tar.bz2 )
• 2는 주 버전 (Major Version)
• 6은 부 버전(Minor Version)
• 30은 패치 버전(Patch Version)
• Minor version이 홀수: 개발용 테스트 버전
• Minor version이 짝수: 안정 버전
배포판에 포함된 기본 커널을 사용자가 직접 최신의 커널로업그레이드할 수 있음 (커널 업그레이드)
• https://www.kernel.org
23
레드햇 리눅스와 페도라 리눅스 (1)
Red Hat
• 전 세계적으로 가장 유명한 배포판
• 레드햇(Red Hat)사에서 제작한 '레드햇 리눅스(Red Hat Linux)'
Red Hat Enterprise Linux vs. Fedora Linux
• 상용으로 판매되는 레드햇 엔터프라이즈 리눅스(Red Hat Enterprise Linux)레드햇사에서 지원하여 무료로 배포되는 페도라 리눅스(Fedora Linux)
• 무료인 페도라 리눅스는 상용인 레드햇 엔터프라이즈 리눅스에 포함될새로운 기술을 미리 시험하기 위한 용도로도 사용
24
레드햇 리눅스와 페도라 리눅스 (2)
레드햇 리눅스와 페도라 리눅스의 발전
~~~ 중간 생략 ~~~
25
Linux의 종류는 배포판의 차이
Linux 커널
• http://www.kernel.org
• http://mirrors.kernel.org
Linux 배포판
• http://www.ubuntu.com/
• http://fedoraproject.org/
• http://www.centos.org/
BASIC COMMANDS
27
Linux 서버 접속 Protocol
Shell
• telnet: TCP port 23
- Deprecated in most systems
• ssh: TCP port 22
File
• ftp: TCP port 21
• ssh(sftp, scp): TCP port 22
28
필요 package 설치
apt-get update
• root 권한 필요
• sudo apt update
• sudo apt -y install vim
• sudo apt -y openssh-server
29
Linux 접속
Client
• telnet, ssh, ftp, ...
• putty, secureCRT, mlterm, ...
• WinSCP, secureFX, ...
30
Linux 접속
putty with ssh
• Host:192.168.XXX.XXX
• port: 22
• connection type: SSH
Linux IP addr. 확인
• ifconfig [엔터]
31
Linux 접속
Login and shell
• ID: IDID
• PW: XXXX
• 항상 root 계정으로 변경해서 작업할 것
- 로그인후 sudo su -
32
Linux 접속
Password 변경
• passwd 명령
33
Shell
Shell?
• 운영체제 상에서 다양한 운영체제 기능과 서비스를 구현하는인터페이스를 제공하는 프로그램
BASH: GNU Bourne Again Shell
• 가장 많이 쓰이며, 가장 범용적으로 사용됨
• 거의 모든 리눅스 배포판의 기본 shell
CSH: C 스타일 문법을 가지는 쉘, BSD 시스템 표준
• Bourne sheell의 확장
• UC berkeley에서 처음 개발
KSH: 실제 AT&T 버전의 Korn shell
• 어휘의 스코프, 합성 변수, 결합 배열, 이름 참조 그리고 부동 소수점연산등이 새로운 기능
34
기본 명령
shell commands의 규칙
• command -option xxx
• 빈칸이 구분자로 사용됨
- 빈칸을 명령에 포함하려면 " 또는 ' 를 사용
- ex.
ls file name
ls "file name"
• 도움말
- command --help
- ex. ls --help
35
기본 명령
로그인/로그아웃
명령 기능 주요 옵션 예제
ssh 유닉스시스템에 접속 - ssh iter2.jbnu.ac.kr
logout 유닉스시스템에서 접속
해제
- logout
exit - exit
passwd 암호변경 - passwd
36
기본 명령
파일/디렉토리 조작 명령
명령 기능 주요 옵션 예제
pwd 현재 디렉토리 경로 출력 - pwd
ls 디렉토리 내용 출력-a : 숨김파일출력-l : 파일 상세정보 출력-F : 종류 구분
ls -a /tmpls -l
cd 현재 디렉토리 변경 -cd /tmpcd ~han01
cp 파일/디렉토리 복사 -r : 디렉토리 복사cp a.txt b.txtcp -r dir1 dir2
mv파일/디렉토리 이름변경과이동
-mv a.txt b.txtmv a.txt dir1mv dir1 dir2
rm 파일/디렉토리 삭제 -r : 디렉토리 삭제rm a.txtrm -r dir1
37
기본 명령
파일/디렉토리 조작 명령
명령 기능 주요 옵션 예제
mkdir 디렉토리 생성 - mkdir dir1
rmdir 빈 디렉토리 삭제 - mkdir dir2
cat 파일 내용 출력 - cat a.txt
more 파일 내용을 쪽단위로 출력 - more a.txt
chmod 파일 접근권한 변경 - chmod 755 a.out
grep 패턴 검색 grep abcd a.txt
38
기본 명령
프로세스 관련 명령
명령 기능 주요 옵션 예제
ps 현재 실행 중인 프로세
스의 정보를 출력
-ef : 모든 프로세스에
대한 상세 정보 출력
ps
ps -ef
ps -ef | grep ftp
kill 프로세스 강제 종료 -9 : 강제 종료 kill 5000
kill -9 5001
39
Directory hierarchy
특수 directory directives
• . : 현재 위치
• .. : 상위 directory
• ~ : 사용자의 홈 디렉토리 (ex. /home/user1)
절대 경로
• / <- 로 시작하는 경우
- cp /tmp/a.txt .
- cp /home/user1/a.txt /tmp
상대 경로
• / <- 로 시작하지 않는 경우
- cp ./a.txt /tmp
- cp ../../dir1/a.txt ../a.txt
40
환경설정
alias
• 특정 명령의 다른 이름을 지정
env
• 지금 자신의 환경 변수를 나열
.bashrc (.profile)
• Bash shell이 시작시 참조하는 환경변수 설정
Hidden file
• Linux에서는 파일명 앞에 '.' 이 붙으면 숨김파일 임
PS1
• Bash shell에서 프롬프트를 설정
PATH
• 실행파일 또는 참조할 파일의 위치를 결정
• PATH 변수의 순서대로 특정파일을 찾음
42
Tips
tar
• 여러 파일을 하나로 묶음
zip
• 여러 파일을 하나로 압축
gz
• 하나의 파일을 압축
history
• 사용한 명령어들을 나열
indent
• 소스코드를 예쁘게 정렬해 줌
• indent -npsl -bli0 -sob -nbc -i8 -l1000 code.c
• alias ind='indent -npsl -bli0 -sob -nbc -i8 -l1000'
43
Tips
tab 자동완성
• Bash shell에서는 tab키로 나머지 명령을 자동으로 완성 가능
상하 커서키
• history에서 최근에 사용된 명령을 다시 사용할 때
ctrl + r
• history에서 최근 사용된 명령을 자동 완성
ctrl + s & ctrl + q
• 스크린 출력을 정지/재개
*
• 모든 문자들을 대체
44
Meta characters
Char. Function
> Redirection from stdout to file
>> Redirection from stdout to file
< Redirection from file to stdin
* Any character
? Any character, but one
| Pipe from stdout of p1 to stdout of p2
; Command order
& Background execution
45
Ex: Find Files
파일 다운로드 및 압축해제
• wget http://cslab.cbnu.ac.kr/_down/usp/kernel.tgz
• 압축풀기 : tar xfz kernel.tgz
실습내용
• kernel 아래에서 아래 파일 이름으로 된 파일의 위치를 찾으시오
• File names
- fcntl.c
- range.h
- xenfs.h
- builtin-stat.c
- algos.c
- slab.c
• e.g.
- kernel/aaa/bbb/fcntl.c
- kernel/ccc/ddd/range.h
- ...
46
Ex: Find Files 2
실습내용
• kernel/mm 아래에서 아래 텍스트를 가지고 있는 파일의 위치와 몇 번째행에 있는지 찾으시오
• Texts
- 'YouGotIt'
- 모두 3개임
VI EDITOR
48
vi edit의 모드
Command mode
• Text의 위치나 편집 가능하게 함
Input mode
• 사용자가 text를 작성할 수 있는 모드
49
How to exit from vi (command mode)
:q <enter>
• to exit, if you have not made any changes to the file
:q! <enter>
• the forced quit, it will discard the changes and quit
:wq <enter>
• for save and Exit
:x <enter>
• same as above command
ZZ
• for save and Exit (Note this command is uppercase)
The ! Character forces over writes, etc. :wq!
50
Moving Around
You can move around only when you are in the command mode
Arrow keys usually works (but may not)
The standard keys for moving cursor are:
• h - for left
• l - for right
• j - for down
• k - for up
51
Entering text
To enter the text in vi you should first switch to input mode
• To switch to input mode there are several different commands
• a - Append mode places the insertion point after the current character
• i - Insert mode places the insertion point before the current character
• I - places the insertion point at the beginning of current line
• o - is for open mode and places the insertion point after the current line
• O - places the insertion point before the current line
• R - starts the replace(overwrite) mode
52
Editing text
x - deletes the current character
d - is the delete command but pressing only d will not delete anything you need to press a second key
• dw - deletes to end of word
• dd - deletes the current line
• d0 - deletes to beginning of line
There are many more keys to be used with delete command
53
Undo and repeat command
u - undo the changes made by editing commands
. - repeats the last edit command
54
Copy, cut and paste in vi
v - visual mode
y - yank
yy - (yank) copy current line to buffer
nyy - where n is number of lines
p - paste the yanked lines from buffer to the line below
P - paste the yanked lines from buffer to the line above
(the paste commands will also work after yank)
55
Jump
gg - jump the first line of file
G - jump the end of file
nG - jump to the line (where n is line number)
56
Search / Replace
/asdf - search forward for 'asdf'
• to move forward, type n
?asdf - search backward for 'asdf'
• to move backward, type N
:%s/asdf/xywz/g - replace 'asdf' by 'xywz'
57
Everything in a Slide
58
유용한 vi environment -> .vimrc
au FileType * setl fo-=cro
syntax on / off
set number / nonumber
set wrap / nowrap
set hlsearch
set ignorecase
set ts=4
59
GCC Option(1)
-o
• 출력(output) 화일명을 정하는 옵션
• gcc -o hello hello.chello.c라는 파일을 hello라는 실행파일로 만듦
-c
• 컴파일(compile) 작업만 하고 싶은 경우
• gcc -c hello.chello.c 파일에서 hello.o라는 오브젝트 파일로 만듦
60
GCC Option(2)
-I
• #include 문장에서 지정한 헤더 화일이 들어있는 곳을 정하는 옵션
• gcc -c source.c -Iinclude-I를 붙여씀
-g
• 컴파일된 오브젝트파일에 디버깅 코드를 추가
• gcc -g -o hello hello.c
61
GCC Option(3)
-O
• 코드를 최적화(optimization)
• -O2는 가장 많이 최적화
• -O0라고 하면 최적화를 하지 않음
• 기본값: -O1
-l
• 어떤 라이브러리를 사용하는지 지정
• -l 은 명령줄의 맨 뒤에 사용할 것
-L
• 그 라이브러리가 어느 디렉토리에 있는지 알려 줌
62
Ex: vi로 c code를 작성
실습목표
• vi를 이용하여, 1~100사이의 prime number를 출력하는 프로그램을 작성
• main.c 에서는 for 문으로 1~100의 loop
• prime.c 에서는 checkprime함수를 구현하여 prime number인지 확인
• Compile: gcc -o getprime main.c prime.c
• ./getprime 으로 실행
MAKE
64
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 can use to command based programs
65
make basic rules
3 components
• target, dependency, command
File format
• file name: Makefile (makefile)
• format
target: dependency[tab] command
66
make example
make 를 사용하지 않을때
• gcc -c main.c
• gcc -c add.c
• gcc -c sub.c
• gcc -o test main.o add.o sub.o
• 혹은, gcc -o test main.c add.c sub.c
67
Makefile example
Makefile
all: main.o add.o sub.o
gcc -o test main.o add.o sub.o
main.o: addsub.h main.c
gcc -c main.c
add.o: add.c
gcc -c add.c
sub.o: sub.c
gcc -c sub.c
반드시 tab으로 입력
68
make example
어느 때 어떤 target이 다시 컴파일 될 것인가?
• main.c가 바뀌었을 경우
• add.c 혹은 sub.c가 바뀌었을 경우
• addsub.h가 바뀌었을 경우
69
make clean
To clean up
• make clean
all: main.o add.o sub.o
gcc -o test main.o add.o sub.o
main.o: addsub.h main.c
gcc -c main.c
add.o: add.c
gcc -c add.c
sub.o: sub.c
gcc -c sub.c
clean:rm *.o test
70
macro
CC=gcc
SRC=main.c add.c sub.c
main: ${SRC}
${CC} -o test ${SRC}
71
미리 정해져 있는 매크로
make -p 를 통하여 모든 값들을 확인 가능
• ASFLAGS = as 명령어의 옵션 세팅
- AS = as
• CFLAGS = gcc 의 옵션 세팅
- CC = cc (= gcc)
• CPPFLAGS = g++ 의 옵션
- CXX = g++
• LDLFAGS = ld 의 옵션 세팅
- LD = ld
• LFLAGS = lex 의 옵션 세팅
- LEX = lex
• YFLAGS = yacc 의 옵션 세팅
- YACC = yacc
72
Simple Makefile
CFLAGS = -Wall -O -g
bin=hello
t1=main
t2=funcs
obj=$(t1).o $(t2).o
all: $(bin)
$(bin): $(obj)
$(CC) $(obj) -o $@
clean:
rm -f $(bin) *.o
$(bin)을 나타내는 내부변수
CFLAGS = -Wall -O -g
bin=hello
t1=main
t2=funcs
obj=main.o funcs.o
all: hello
hello: main.o funcs.o
gcc main.o funcs.o -o hello
clean:
rm -f hello *.o
73
Ex: Makefile 작성
Ex.
• 앞서 코딩한 getprime 프로그램을 build 할 수 있는 Makefile 작성
• make, make all, make clean이 정상적으로 동작하는지 확인
- make 와 make all은 동일 함
Ex.
• 파일을 복사하는 mycp 프로그램 작성
• build 할 수 있는 Makefile 작성
• ./mycp a.txt b.txt
FILE TRANSFER USING WINSCP
75
WinSCP
http://winscp.net
ssh를 이용한 파일 전송 tool
76
WinSCP
77
Exercise
Ex.
• 앞서 제작한 getprime 프로그램의 폴더를 모두 압축하여 Windows로전송하자
• 아래 두가지 방법 (gugu 폴더를 모두 압축할 경우)
tar cvfz gugu.tar.gz gugu
zip -r gugu.zip gugu
• WinSCP를 이용하여 다운로드
GNU DEBUGGER (GDB)
79
GDB 기본 사용법
gcc 컴파일시 -g 옵션 추가 (-O 옵션은 제거)
gdb 실행
• gdb a.out
• gdb --args a.out 1 2 3 4
root@iter1:/tmp> gdb a.outGNU gdb (Ubuntu/Linaro 7.4-2012.04-0ubuntu2.1) 7.4-2012.04Copyright (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 /tmp/a.out...done.(gdb)
80
GDB 기본 사용법
종료
• q / ctrl+d
소스 찾아가기 (list)
• l : main 함수를 기점으로 소스의 내용이 출력된다
• l 10 : 10 행 주변의 소스가 출력
• l func : func 함수의 소스를 출력
• l a.c:func : a.c 파일의 func 함수부분을 출력
• l a.c:10 : a.c 파일의 10행을 기준으로 출력
81
GDB 기본 사용법
중단점 사용하기 (breakpoint)
• b func : func 함수에 브레이크 포인트 설정
• b 10 : 10행에 브레이크 포인트 설정
• b a.c:func : a.c파일의 func함수에 브레이크 포인트 설정
• b a.c:10 : a.c파일의 10행에 브레이크 포인트 설정
• b +2 : 현재 행에서 2개 행 이후 지점에 브레이크 포인트 설정
• b -2 : 현재 행에서 2개 행 이전 지점에 브레이크 포인트 설정
• b *0x8049000 : 0x8049000 주소에 브레이크 포인트 설정 (어셈블리로디버깅 시 사용)
• b 10 if var == 0 : 10행에 브레이크 포인트를 설정해되, var 변수 값이0일 때 작동
82
GDB 기본 사용법
중단점 삭제하기 (clear, delete)
• cl func : func 함수의 시작 부분에 브레이크 포인트 지움
• cl 10 : 10행의 브레이크 포인트 지움
• cl a.c:func : a.c 파일의 func함수의 브레이크 포인트 지움
• cl a.c:10 : a.c 파일의 10행의 브레이크 포인트 지움
• cl : 모든 브레이크 포인트 지움
83
GDB 기본 사용법
프로그램 실행, 종료 (run, kill)
• r : 프로그램 수행 (재시작)
• r arg1 arg2 : arg1과 arg2를 인자로 프로그램 수행
• k : 프로그램 수행종료
역추적하기 (backtrace)
• bt : 오류가 발생한 함수를 역으로 찾아감
84
GDB 기본 사용법
변수 정보보기 (info, print)
• info locals : 현재 상태에서 어떤 지역변수들이 있으며, 값은어떠한지를 알 수 있음
• info variables : 현재 상태에서의 전역변수 리스트를 확인
• p lval : lval 값을 확인
• p func : func 함수의 주소값을 확인
• p pt : pt가 구조체라면 구조체의 주소를 확인
• p *pt : pt가 구조체라면 구조체의 값을 확인
• p **pt : *pt가 구조체라면 구조체의 값을 확인
• info registers : 레지스트 값 전체를 한번에 확인
85
GDB 기본 사용법
디버깅 하기 (step, next, continue, until, finish, return, step instruction, next instruction)
• s : 현재 출력된 행을 수행하고 멈추지만, 함수의 경우 함수의 내부로들어가서 수행
• s 5 : s를 5번 입력한 것과 동일
• n : 현재 행을 수행하고 멈추지만, 함수의 경우 함수를 수행하고 넘어감
• n 5 : n을 5번 입력한 것과 동일
• c : 다음 브레이크 포인트를 만날때 까지 계속 수행
• u : for 문에서 빠져나와서 다음 브레이크 포인트까지 수행
86
Ex: gdb
실습목표
• 다음 프로그램을 정상적인 결과값이 나오도록 debugging 하시오
• gcc -g -o a.out a.c
# include <stdio.h>
void main(){
int i, num, j;printf ("Enter the number: ");scanf ("%d", &num );
for (i=1; i<num; i++)j=j*i;
printf("The factorial of %d is %d\n", num, j);}
87
Ex: gdb
실습목표
• 다음 프로그램은 왜 segment fault를 만드는지 설명하시오
• gcc -g -o a.out a.c
#include <stdio.h>
void main(){
char *temp= "Paras";
int i;i=0;
temp[0]='F';
for (i=0 ; i < 5 ; i++ )printf("%c\n", temp[i]);
}
88
Ex: gdb
실습목표
• 다음 프로그램은 왜 segment fault를 만드는지 설명하시오
• gcc -g -o a.out a.c
#include <stdio.h>#include <stdlib.h>#include <string.h>
int main(int argc, char **argv){
char *buf;
buf = malloc(1<<31);strcpy(buf, "This is Test");printf("%s\n", buf);
return 0;}
Top Related