티스토리가 파이어 폭스에서도 잘돌아가고 꽤 괜찮다길래 한본 보고서 마음에 팍 하고 feel 이 꽃혀서
이쪽으로 왔는데 막상 파이어폭스로 글을 적으려고 하니 일부 기능이 돌아가지 않거나 이지웍 글쓰기
모드는 제목만 써지고 안돌아 가는게 아니겠는가!

검색을 해보니 원격 블로깅으로 하는 방법이 있었지만 이건 내 취향이 아닐뿐더러 프로그램에
비밀번호같은걸 적어두느니 방법을 찾아내겠다고 눈 땡그랗게 뜨고 여기 저기 찾아본결과
못찾아서 ies4linux 라는 wine 을 이용한 익스플로러와 vmware 에서 쓰는걸 이용하다가
ies4linux의 반짝임 안구공격과 vmware 의 귀차니즘 정신공격으로 인해 다시 한번 검색을하였고

드디어 방법을 찾아내게 되었다. 무척이나 간단한 방법으로 아래에 적어두도록 하겠다.
이 방법을 알려주신 작은상자님께 감사의 말씀을!

부디 다른 리눅스 유저들도 나와같은 상황이 었다면 그 문제로 부터 해방되길 바란다.

----------------

파이어 폭스의 주소창에서

about:config

를 치면 정말열래? 하는 창이 뜰건데 과감히 응! 이라고 눌러준다. 그럼 파이어 폭스의 설정창이 뜨는데
한 중간 쯤 쭉 내려가면

general.useragent.extra.firefox

라는 값이 있을것이다.  아마 설치한 리눅스 버전에 따라 우측에 각기 파이어 폭스의 이름이 적혀있을
것이다. 본인의 경우 아치리눅스를 사용하는데 파라다이스 뭐시기 였다. 데비안이면 아마 아이스 위즐
일것이고...  아무튼 이부분을 버전부분은 수정할 필요 없고

Firefox/3.0.x

이런식으로 버전만 놔두고 앞에 이름을 수정한다음 창을 닫아주면된다.

그 이후부터는 아무런 문제없이 사용이 가능할 것이다. 이 문제는 아마 브라우저의 제목창의 이름값으로
사용하는 브라우저의 종류를 구분하고 거기에 맞추어 모드를 구현하면서 발생하는 문제인것 같다.

윈도우의 경우 파이어 폭스라는 이름으로 고정되어 있으니 문제가 없었으나 리눅스의 경우 이름에 관련된
저작권 문제로 각자 이름이 다르게 되면서 이와 같은 문제가 발생한 것같다. 개발자들에게 이것도
고쳐달라고 하고 싶긴 한데 그럼 너무 미안해질거 같은 느낌이.. ㅎㅎ

출처 : http://ranoking.tistory.com/4
addr2line : 바이너리 파일에서 특정 주소가 어떤 파일의 어떤 행인지 보임
ar : 정적 라이브러리를 만들고 수정
as : GNU 어셈블러
gprof : 프로파일 정보 출력
ld : GNU 링커(collect2 대신에 사용될 수 있다)
nm : ELF 포멧 오브젝트 파일의 내부 심벌을 보임
objcopy : 오브젝트 파일을 복사 및 변환
objdump : 오브젝트 파일을 덤프하거나 역어셈할 때 사용
ranlib : 정적 라이브러리 내에 인덱스를 생성할 때 사용
readelf : ELF 포멧의 오브젝트 파일의 정보를 보임
size : 오브젝트 파일의 사이즈 정보 출력
strip : 오브젝트 파일의 사이즈를 줄임




gcc 전역 옵션

옵션

설명

-E

전처리 과정 화면에 출력

-S

어셈블리 파일 생성

-c

오브젝트 파일 생성

-v

컴파일 과정 화면에 출력

--save-temps

컴파일 생성되는 중간 파일 저장

-da

컴파일 과정에서 생성되는 중간 코드 생성(RTL 파일 생성)


전처리기(cpp0) 옵션

옵션

설명

-I[패스]

헤더 파일을 탐색할 디렉토리 지정

-include [헤더 파일 패스]

해당 헤더 파일을 모든 소스 추가

-D[매크로]

외부에서 #define 지정

-D[매크로]=[매크로 ]

외부에서 해당 매크로를 정의하고 값을 지정

-U[매크로]

외부에서 #undef 지정

-M 또는 –MM

make 기술 파일을 위한 소스 파일의 종속 항목 출력

-nostdinc

표준 C 헤더 파일을 include하지 않음

-C

전처리 과정에서 주석을 제거하지 않음

-Wp,[옵션리스트]

옵션 리스트를 전처리기에 바로 전달


C 컴파일러(cc1) 옵션
- C 언어 옵션

옵션

설명

-ansi

ANSI C 문법으로 문법 검사

-std=[C 표준]

지정한 C 표준으로 문법 검사(표준: c89,c99,gnu89,gnu99 )

-traditional

K&R C 문법으로 문법 검사

-fno-asm

asm, inline, typeof 키워드를 사용하지 않음(gnu89 문법 기준)


- 경고 옵션

옵션

설명

-Wall –W

모든 경고 메시지 출력

-w

모든 경고 메시지 제거

-Werror

모든 경고를 오류로 취급하여 컴파일 중단

-pedantic

C89 표준에서 요구하는 모든 경고 메시지를 표시

-pedantic-errors

C89 표준에서 요구하는 모든 오류 메시지를 표시

-Wtraditional

ANSI C K&R C 간에 서로 다른 결과를 가져올 있는 부분이 있다면 경고


- 최적화 옵션

옵션

설명

-O0

아무런 최적화를 수행치 않음

-O1 또는 –O

최적화 레벨 1 수행

-O2

최적화 레벨 2 수행

-O3

최적화 레벨 3 수행

-Os

사이즈 최적화 수행


- 디버깅 옵션

옵션

설명

-g

바이너리 파일에 디버깅 정보 삽입

-pg

프로파일을 위한 코드 삽입


어셈블리(as) 옵션

옵션

설명

-Wa,[옵션 리스트]

어셈블러에게 옵션 리스트를 바로 전달

-Wa,-al

어셈블된 코드와 인스트럭션을 보임

-Wa,-as

정의된 심볼을 보임


링크(ld) 옵션

옵션

설명

-L[패스]

라이브러리 탐색 디렉토리 지정

-l[라이브러리 이름]

해당 라이브러리를 링크

-shared

공유 라이브러리를 우선하여 링크

-static

정적 라이브러리를 우선하여 링크

-nostdlib

표준 C 라이브러리를 사용하지 않음

-M 또는 –MM

make 기술 파일을 위한 소스 파일의 종속 항목 출력

-nostdinc

표준 C 헤더 파일을 include하지 않음

-Wl,[옵션 리스트]

옵션 리스트를 링크에 바로 전달



SVN (Subversion) 사용방법

버전 관리작업을 하거나 , 공동작업, 복원, 등의 작업을 할때 소스가 엉키지 않고 서로 침범하지 않은 상태에서 개발이 가능합니다, 소스의 수정 및 변형을 추적할 수도 있고, 개발 인원들 간의 소스를 덮어 쓰는 일도 방지 할 수 있습니다. 

이전의 개발 방식은 소스를 직접 수정하거나, 내려 받은 소스를 서버에 올리는 등의 작업을 이용하였지만. 이 방식은 개발자들이 많거나, 팀프로젝트로 진행을 할때 , 서로 파일이 엉키거나 수정한 부분을 덮어 쓰는 등의 문제 이 발생할 수가 있습니다. 

그래서 버전관리 시스템인 SVN을 이용해서 프로젝트를 관리를 하는것입니다, 물론 개인적인 개발이나 혼자 개발하는 환경이라면 구지 사용해야 할 필요보다는 불편한 요소들이 더욱 많은것은 사실입니다. 

SVN 저장소 만들기 
SVN 저장소를 만들기 위해서는 SVN 을 컴파일 해야 합니다. 서브 버전의 최신 버전은 1.6.11 입니다. 
다운로드는 아래 URL에서 받으면 됩니다. Binary , Source 를 받으시면 됩니다. 
Tigris.org (http://subversion.tigris.org)
http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=260&expandFolder=74

컴파일 방법 (*nix)
세부적인 컴파일 방법은 다루지 않고 기본적으로 사용가능한 환경 및 이용방법에 대해서만 다뤄 보도록 하겠습니다. 

$ wget http://subversion.tigris.org/downloads/subversion-1.6.11.tar.gz
$ tar zxvf subversion-1.6.11.tar.gz 
$ cd subversion-1.6.11
$ ./configure --prefix=/usr/local/svn --with-zlib --without-berkeley-db
$ make
$ make install

위와 같이 진행을 하시면 SVN(subversion) 이 설치가 됩니다. 물론 위 사이트에서 바이너리 버전을 배포 하고 있으니 배포 버전을 사용하시거나 yum, yast(SuSE), apt-get 등의 패키지 관리 시스템 을 이용해서 설치 하셔도 무방합니다. 

이제 저장 소를 만들어 보겠습니다. 저장소는 소스와 버전관리가 이루어지는 DB라고 말씀을 드리겠습니다. SVN을 이용해서 저장을 프로젝트를 진행을 하면 실제 파일들이 저장되는 구조가 아니라 각 revision 단위로 업데이트 내용 및 수정 내용, 추가 내용들이 DB에 저장되는 형태를 지니고 있습니다. 

$ mkdir [저장소를 만들 경로]
$ cd [저장소를 만들 경로]
$ svnadmin create --fs-type fsfs [저장소]

위와 같이 작업을 하시면 저장소가 만들어 지도록 되어 있습니다. 예를 들어 /home/lovelgw/project/에 저장소를 만들려면 아래와 같이 진행을 하시면 됩니다. 
$ mkdir /home/lovelgw/project
$ cd /home/lovelgw/project
$ svnadmin create --fs-type fsfs repository

이러면 경로 /home/lovelgw/project/repository 에 저장소가 만들어 집니다. 
저장소를 만들었으니 이제 SVN을 이용할 수 있도록 서버를 설정하면 됩니다. 

$ svnserve -d -r [저장소를 만등 경로]

저장소를 만든 경로를 두에 적어 두시고 실행을 시키시면 서버가 설정이 됩니다. 방화벽 에서 3690 포트를 열어 주시면 외부에서 저장소에 접근할 수 있습니다. 

$ netstat -na 
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State 
tcp        0      0 :::3690                     :::*                        LISTEN 

위와 같이 3690 포트가 열려 있음을 확인 할 수 있습니다. 

/etc/sysconfig/iptables 파일을 열어 Iptable 에 규칙을 추가해 줍니다. 
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3690 -j ACCEPT

또는 그외 외부 방화벽을 사용하시면 외부 방화벽에서 포트를 열어 주시면 됩니다. 

사용자 추가를 위해 저장소가 있는 디렉토리로 이동을 하시면 
$ ls
conf  dav  db  format  hooks  locks  README.txt
위와 같이 디렉토리 및 파일들이 만들어져 있습니다. 

$ vi conf/svnserve.conf 파일을 수정하여 줍니다. 
[general]
# 저장소 접근 권한 입니다. 
anon-access = read
# 익명 사용자에게 read 권한을 줍니다. 
auth-access = write
# 인증된 사용자에게 write 권한을 줍니다.
password-db=passwd
# 인증방식은 passwd 파일을 이용합니다. 
realm = repository
# 저장소 문구 입니다. 변경하시면 변경하신 문구가 나옵니다. 

$ vi conf/passwd
[users]
아이디 = 비밀번호 

위와 같이 설정하시면 저장소가 만들어 집니다. 

이제 간단히 저장소를 설치/설정 하는 방법을 해보았는데 , 더욱 자세한 방법을 다루기에는 다른 문서를 찾아 보시는게 더욱 좋으실것 같습니다. 이제 SVN을 사용하기 위한 환경이 완성 되엇습니다. 
이제 SVN에 기능 및 사용방법에 대해서 알아보도록 하겠습니다. 

import : 저장소에 파일을 넣어주는것입니다. , 아무것도 없는곳에 이제 만들 준비를 하는 작업입니다. 
$ svn import [import 대상] svn://[주소]/저장소
위와 같이 하시면 대상에 들어 있는 목록 들이 vi에 표시가 되는데 vi를 닫고 c를 눌러 진행을 하시면 저장소에 자료들이 import 됩니다. 

checkout : 서버에서 소스를 받아오는 과정입니다. 
$ svn checkout svn://[주소]/저장소 [저장경로]
위와 같이 하면 저장소에 있는 대상을 받아 올 수 있습니다. 물론 저장소만 관리하는게 아니라. release 등을 관리 할 수 있습니다. 

update : 체크 아웃한 파일을 업데이트를 하는 것입니다. 전체를 받아오는것이 아닌 변경된 부분만 받아오도록 되어 있습니다. 
$ svn update

commit : 소스를 수정하고 저장소에 소스를 업데이트 하는 방법입니다. 
$ svn commit 
위 명령어는 저장소를 받은 디렉토리( 작업디렉토리)에서 이용을 하시면 됩니다. 

add : 새로운 파일을 저장소에 추가하는 명령어 입니다. 
$ svn add [파일]
이 명령어를 사용한 후에는 commit 을 해주어야 실제적으로 저장소에 저장이 됩니다. 

export : 순수 작업 파일만을 가져옵니다. 
$ svn export svn://[주소]/[저장소] [저장 경로]

위와 같이 하시면 소스관리를 할 수 있습니다. 각종 개발툴에서는 플러그인 형태 또는 소스 관리 기능으로 SVN을 지원하고 있습니다. 그외 더 많은 기능 더 유용한 사용법은 많으나 천천히 다뤄보도록 하겠습니다 ^^

출처 :
http://www.lovelgw.com/Blog/182

sudo apt-get install manpages-dev glibc-doc
맨페이지 설치

http://linux.die.net/man/
영문 manpage 사이트
SRCS    = $(wildcard *.c)
CC        = gcc

.SUFFIXES : .o
% : %.o
    $(CC) -o $@ $^

all : $(SRCS:.c=)
clean :
    rm -rf $(SRCS:.c=)

현재 폴더에 있는 *.c파일들을 확장자 앞의 각 파일이름으로 된 실행파일로 컴파일해서 만들어준다.



저장 및 종료

명령어

설명

:w

저장

:w file.txt

file.txt 파일로 저장

:w >> file.txt

file.txt 파일에 덧붙여서 저장

:q

vi 종료

:q!

Vi 강제 종료

ZZ

저장 후 종료

:wq!

강제 저장 후 종료

:e file.txt

file.txt 파일을 불러옴

:e

현재 파일을 불러옴

 

입력모드 전환

a

커서 위치 다음 칸부터 입력

A

커서 행의 맨 마지막부터 입력

i

커서의 위치에 입력

I

커서 행의 맨 앞에서부터 입력

o

커서의 다음 행에 입력

O

커서의 이전 행에 입력

s

커서 위치의 한 글자를 지우고 입력

cc

커서 위치의 한 행을 지우고 입력

 

삭제

x, dl

커서 위치의 글자 삭제

X, dh

커서 바로 앞의 글자 삭제

dw

한 단어를 삭제

d0

커서 위치부터 행의 처음까지 삭제

D, d$

커서 위치부터 행의 끝까지 삭제

dd

커서가 있는 행을 삭제

dj

커서가 있는 행과 그 다음 행을 삭제

dk

커서가 있는 행과 그 앞 행을 삭제

 

이동

h

왼쪽으로 이동

l

오른쪽으로 이동

j

아래 행으로 이동

k

위 행으로 이동

w or W

다음 단어의 첫 글자로 이동

b or B

이전 단어의 첫 글자로 이동

e or E

단어의 마지막 글자로 이동

<CR>

다음 행의 첫 글자로 이동

^

그 행의 첫 글자로 이동

$

그 행의 마지막 글자로 이동

+

다음 행의 첫 글자로 이동

-

위 행의 첫 글자로 이동

(

이전 문장의 첫 글자로 이동

)

다음 문장의 첫 글자로 이동

{

이전 문단으로 이동

}

다음 문단으로 이동

H

커서를 화면의 맨 위로 이동

z<CR>

현재 행을 화면의 맨 위로 이동

M

커서를 화면의 중앙으로 이동

z.

현재 행을 화면의 중앙으로 이동

L

커서를 화면 최하단으로 이동

z-

현재 행을 화면의 최하단으로 이동

[n]H

커서를 위에서 n행으로 이동

[n]L

커서를 아래에서 n행으로 이동

Ctrl + u

반 화면 위로 스크롤

ctrl + d

반 화면 아래로 스크롤

Ctrl + b

한 화면 위로 스크롤

ctrl + f

한 화면 아래로 스크롤

gg, 1G

문서의 맨 첫 행으로 이동

G

문서의 맨 마지막 행으로 이동

[n]G

n행으로 이동

:[n]

n행으로 이동

 

복사 & 붙이기

yy

커서가 위치한 한 행 복사

p

붙여넣기

[N]yy

커서가 위치한 이후로 N행 복사

[N]p

N번만큼 붙여넣기 반복

 

블록 지정 관련

v

블록 지정

Ctrl + v

비쥬얼 블록 지정

~

대소문자 전환

d

삭제

y

복사

c

치환

>

행 앞에 탭 삽입

<

행 앞에 탭 제거

:

선택된 영역에 대하여 ex 명령

J

행을 합침

U

대문자로 만듦

u

소문자로 만듦

 

문자열 탐색 및 치환

/[문자열]

문자열을 탐색

:s/old/new

현재 행의 처음 old를 new로 교체

:s/old/new/g

현재 행의 모든 old를 new로 교체

:10,20s/old/new/g

10행부터 20행까지 모든 old를 new로 교체

:-3,+4s/old/new/g

현재 커서 위치에서 3행 위부터 4행 아래까지 old를 new로 교체

:%s/old/new/g

문서 전체에서 old를 new로 교체

:%s/old/new/gc

문서 전체에서 old를 new로 확인하며 교체

:g/pattern/s/old/new/g

pattern이 있는 모든 행의 old를 new로 교체

:g/pattern/s/new/g

:%s/old/new/g와 동일

 

파일 버퍼 관련 명령 요약

:buffers

버퍼의 내용을 나열

:files 또는 :ls

버퍼의 내용을 나열

:b[N]

N번 버퍼로 이동

:bd[N]

N번 버퍼를 삭제(N이 없으면 현재의 버퍼를 완전 삭제)

:bw[N]

N번 버퍼를 완전 삭제(N이 없으면 현재의 버퍼를 완전 삭제)

:bp[N]

이전 버퍼로 이동. N을 붙이면 N번만큼 이전 버퍼로 이동

:bn[N]

이후 버퍼로 이동. N을 붙이면 N번만큼 이후 버퍼로 이동

:sb[N]

창을 수평 분할하여 N번 버퍼를 로드

:bf

첫 번째 버퍼로 이동

:bl

마지막 버퍼로 이동

:al

현재 열려 있는 모든 버퍼를 수평 분할 창에 로드

 

마킹 및 마킹한 위치로 이동

명령어

내용

명령어

내용

ma

a로 마킹, mb는 b로 마킹

   

`a

a로 마킹된 위치로 돌아감

'a

a로 마킹된 행의 처음으로 돌아감

"

직전에 커서가 위치하던 행의 처음

``

직전의 커서 위치로 이동

' "

이전에 vim으로 현재 파일을 닫았을 때 커서가 있던 행의 처음으로 이동

` "

이전에 vim으로 현재 파일을 닫았을 때 커서가 있던 위치로 이동

 

ctags 관령 명령

:ta [tag] or Ctrl + ]

[tag]가 정의된 위치를 나열하고 선택한 위치로 점프, 현재 위치는 stack에 push된다.

:ts [tag] or :tj [tag]

:po or ctrl + t

stack top에 저장된 위치를 pop하고 그 위치로 점프

:sts [tag]

[tag]가 정의된 위치를 나열하고 선택한 위치로 창을 수평 분할하여 새로 생성된 창에 표시

:stj [tag]

:tn

tj나 ts로 점프했을 때 다음 tag로 점프

:tp

tj나 ts로 점프했을 때 이전 tag로 점프

:tr

tj나 ts로 점프했을 때 처음 tag로 점프

:tl

tj나 ts로 점프했을 때 마지막 tag로 점프

:pts [tag]

[tag]가 정의된 위치를 나열하고 선택한 위치로 창을 수평 분할하여 새로 생성된 창에 표시하지만 커서는 현재 위치에 유지

:ptj [tag]

미리보기 윈도우에 tag가 정의된 형식을 보임

:ptn

ptj나 pts로 점프했을 때 다음 tag로 점프

:ptp

ptj나 pts로 점프했을 때 이전 tag로 점프

:ptr

ptj나 pts로 점프했을 때 처음 tag로 점프

:ptl

ptj나 pts로 점프했을 때 마지막 tag로 점프

 

 레지스터 활용

vim a부터 z까지 26개의 네임 레지스터를 지원하는데 이를 반복되는 문자열을 저장해서 사용하면 편리하다.
"a[
저장할문장]    -> a 레지스터에 저장                 ex) "a3yy
"ap                 -> a
레지스터에 저장된 내용을 붙여넣기

 

 매크로 사용

네임 레지스터에 키 입력을 저장해서 사용하는 방법

q[네임 레지스터명] 입력한 뒤 저장할 키들을 순차적으로 누른 후 q를 누르면 저장된다.
@[
등록된 네임 레지스터명]을 누르면 저장된 키들을 사용할 수 있다.


 .vimrc 설정 변경 후 재시작 안하고 적용하는 법
:so .vimrc

find

    : 지정된 경로로 주어진 조건에 따라 파일을 찾고, 그 경로를 보여줌

      root에서 접근 권한을 제한한 파일이나 디렉토리에 관해서는 " 허가 거부됨" 이라는

      메세지가 뜨고 찾지를 못함 (경로를 지정하지 않으면 현재 디렉토리부터임)

   1. 사용법

       find [경로] options expression!

    2. 옵션들

        -name : 이름을 기준으로 ...

        -perm : 퍼미션을 기준으로...

        -gruop: 해당그룹 소유의  파일이나 디렉토리를 찾을때

        -user : 해당 소유자의 파일이나 디렉토리를 찾을때

        -atime n  : n일 이전에 엑세스한 파일을 찾을때

        -ctime n : n일 이전에 변경된 파일을 찾을때

        -mtime n : n일 이전에 수정된 파일을 찾을때

        -exec : 찾아진 파일등과 연계하여 명령을 내리게 하는 옵션

                    사용하기위해 마지막에  " \; "를 입력해야함.

         -type : 찾고자 하는 파일이나, 디렉토리의 유형을 지정해 줄때

                1)  -type d : 디렉토리를 찾는다

                2)  -type f : 일반파일을 찾는다

                3)  -type l :  링크된 것을 찾는다.

                4)  -type b : 블록 파일을 찾는다.

                5)  -type c : 문자 파일( usb, serial port)을 찾는다.

                6)  -type p : 파이프인 특수 파일을 찾는다      

                7)  -type s : 소켓파일을 찾는다. 

         -ok : -exec와 유사

         -print : 출력을 화면으로...(생략가능)

                   뒤에 2>/dev/null 를 쓰면 접근 권한이 없는 파일이나 디렉토리에 접근시 나오는

                    리스트는 화면에 출력하지 않는다.

          -ls : 상세히 출력

         -size n : n블록 길이의 파일을 찾는다. +n은 n블록보다 큰파일, -n은 n블록도다 작은파일

                       nc는 n문자 길이의 파일..

         -inum n : inode번호가 n인 파일을 찾을때


 데비안 5.04를 사용중... 처음에 플래시 플레이어로 swfdec 이라는 프로그램이 설치되어 있었다. 이 프로그램은 아이스위즐(모질라)에서 제대로 플래시들을 표현해 주지 못했다. 그래서 기존의 swfdec 프로그램을 삭제하고 새로이 adobe 홈페이지에서 flash player를 다운받아서 설치하였다.

1. 일단 기존의 swfdec 프로그램을 삭제한다.

# apt-get --purge remove swfdec-mozilla

2. adobe 홈페이지 http://www.adobe.com/kr 에 가서 abobe flash player를 다운받는다.

install_flash_player_10_linux.tar.gz 파일을 다운받았다.

3. 플러그인을 설치하기 위해 디렉터리를 생성한다.

$ mkdir -p ~/.mozilla/plugins/

4. 다운 받은 파일을 압축해제 해서 위에서 생성한 디렉터리로 복사한다.

$ tar xvzf install_flash_player_10_linux.tar.gz
(압축해제를 하면 다음과 같은 파일이 나온다... libflashplayer.so)
$ cp libflashplayer.so ~/.mozilla/plugins/

5. 이제 새로 아이스위즐(모질라)를 실행해 보면 adobe 사의 flash player 로 바뀌어 있을 것이다....

GDB 기본 명령어

 

l(list)

소스 보기

b

브레이크 포인트

info breakpoints

브레이크 포인트 정보(info b)

cl

브레이크 포인트 삭제

r(run)

프로그램 수행

s(step)

프로그램을 한 행씩 실행(함수 호출 시 내부로 들어감)

n(next)

프로그램을 한 행씩 실행(함수 호출 시 내부로 들어가지 않음)

c(continue)

브레이크 포인트를 만날 때까지 실행

u

현재 루프를 빠져 나감

finsh

현재 함수를 수행하고 빠져나감

return

현재 함수를 수행하지 않고 빠져나감

si

인스트럭션 단위로 s동작 실행

ni

인스트럭션 단위로 n동작 실행

watch

변수 값이 변할 때마다 알려줌

info locals

현재 상태에서 지역 변수들을 보여줌

info variable

현재 상태에서 전역 변수들을 보여줌

p(print)

해당 변수나 함수 값을 보여준다(밑에 표 참조)

p 변수=설정값

변수 값 설정

display

변수 값을 계속 보여줌(밑에 표 참조)

info frame

현재 함수의 스택 프레임을 보여줌

x

메모리 상태 검사(x/[범위][출력 형식] [범위의 단위])

disas

어셈블리 코드 보기

call

함수를 임의대로 호출 할 수 있다

signal

프로세스에게 시그널을 보낸다

set

메모리 특정 영역에 값을 설정(set {타입}[주소] = [])

 


P(
출력) 명령 사용법

 

p [변수명]

변수 값을 출력

p [함수명]

함수의 주소를 출력

p/[출력 형식] [변수명]

변수 값을 출력 형식으로 출력

p ‘[파일명]’::[변수명]

파일명에 있는 전역 변수의 값을 출력

p [함수명]::[변수명]

함수에 있는 변수 값을 출력

p [변수명]@[배열 크기]

변수의 내용을 변수 배열의 크기 형태로 출력

 

 

display 명령 사용법

 

display [변수명]

변수 값을 매번 화면에 디스플레이 한다

display/[출력 형식] [변수명]

변수 값을 출력 형식으로 디스플레이 한다

undisplay [디스플레이 번호]

디스플레이 설정을 없앤다

disable display [디스플레이 번호]

디스플레이를 일시 중단한다

enable display [디스플레이 번호]

디스플레이를 다시 활성화한다

 

 

출력 형식

 

t

2진수로 출력

o

8진수로 출력

d

부호가 있는 10진수로 출력(int)

u

부호가 없는 10진수로 출력(unsigned int)

x

16진수로 출력

c

최소 1바이트 값을 문자형으로 출력

f

부동 소수점 값 형식으로 출력

a

가장 가까운 심볼의 오프셋을 출력


+ Recent posts