Linux2015. 9. 15. 13:20


http://docs.gstreamer.com/display/GstSDK/Installing+the+SDK


GstreamerSDK는 리눅스배포판별로 바이너리 패키지셋을 제공한다. 배포판 중에 Ubuntu에 대한 자세항 설명을 기술할거다.

소스코드를 다운로드하고 직접 빌드해서 환경을 설정할 수 도 있다.


다운로드 및 SDK 설치


1. Ubuntu 12.04(Precise Pangolin) 설치

2. gstreamer-sdk.list를 apt source list에 추가

SDK의 repository정보를 apt source list에 추가해주어야 한다.

다운로드 후 다음 명령으로 추가한다.

sudo cp gstreamer-sdk.list /etc/apt/sources.list.d/

3. GPG key추가 및 레포지트리 리프레시

이어서 apt repository의 GPG key가 추가되어야 하고 목록이 리프레시 되어야 한다.

wget -q -O - http://www.freedesktop.org/software/gstreamer-sdk/sdk.gpg | sudo apt-key add -

sudo apt-get update

4. SDK 설치

이제 새 레포지트리가 활성화되었다. 아래 명령으로 SDK를 설치하면 된다.

sudo apt-get install gstreamer-sdk-dev


개발환경 설정


빌드시 컴파일러는 하이브러리드를 반드시 특정 위치에 있어야 한다.  시스템에 설치된 Gstreamer와의 충돌을 방지하기 위해 비표준 위치(/opt/gstreamer-sdk)에 설치 된다.  쉘스크립트인 gst-sdk-shell은 SDK로 빌드하기 위한 필요한 환경변수들을 설정해준다.

/opt/gstreamer-sdk/bin/gst-sdk-shell

한가지더 필요한 개발환경은 gcc compiler와 text editor이다. SDK로 앱 코드를 빌드할 때 gcc command에 아래 내용을 반드시 추가해 주어야 한다.

'pkg-config --cflags --libs gstreamer-0.10'

다른 gstreamer library를 사용하고 있다면 예를 들어 video 라이브러리 같은... gstreamer-0.10뒤에 추가해주어야 한다.

'pkg-config --cflags --libs gstreamer-0.10 gstreamer-video-0.10'

빌드 시 libtool이 필요한 경우 즉 automake/autoconf를 사용하는 경우라면 configure 스크립트를 gst-sdk-shell환경으로부터 실행해야 한다.

SDK경로를 포함시킬 수 있는 방법이 있는데 그렇게 하면 gst-sdk-shell로부터 실행할 필요가 없다. gcc옵션에 다음과 같이 추가하면 된다.

-Wl, -rpath=/opt/gstreamer-sdk/lib 'pkg-config --cflags --libs gstreamer-0.10'

libtool을 사용하는 경우라면 자동으로 -Wl과 -rpath를 추가해줄것이기 때문에 걱정이 필요없다.


튜터리얼 소스코드 받기


git clone git://anongit.freedesktop.org/gstreamer-sdk/gst-sdk-tutorials

/opt/gstreamer-sdk/share/gst-sdk/tutorials


튜터리얼 빌드하기


시스템과 충돌없이 올바른 라이브러리로 빌드하기 위해서 Gstreamer SDK shell로 먼저 진입해야 한다. /opt/gstreamer-sdk/bin/gst-sdk-shell 을 실행하여 쉘로 진입하라.

그리고 튜터리얼 코드가 있는 폴더로 이동해서 아래 명령으로 빌드하면 된다.


gcc basic-tutorial1-1.c -o basic-tutorial-1 'pkg-config --cflags --libs gstreamer-0.10'


사용하려고 하는 라이브러리에 따라서 pkg-config에 추가가 더 되어야 한다.  튜터리얼코드의 아랫부분에는 필요한 라이브러리들이 순서대로 기술되어 있을 것이다.


앱 배포

배포할 앱은 반드시 필요한 라이브러리들이 함께 있어야 한다. 몇가지 옵션이 있다.

한가지는 shared sdk를 설치할거라면 앱은 /opt/gstreamer-sdk에 두고 .desktop파일을 /usr/share/applications에 만들어 두는 것이다. 문제없이 동작하게 하려면 -Wl, -rpath=/opt/gstreamer-sdk/lib 파라메터로 앱이 빌드되어 있어야 한다.

또는 wrapper script를 사용하는것이다. 이는 필요한 환경변수를 셋팅하고 나서 앱을 생성한다. 그리고 .desktop file을 /usr/share/applications에 생성한다. 가장 많이 사용되는 접근법이고 -WL, -rpath파라메터를 요구하지 않고 더 효율적이다. gst-sdk-shell파일을 둘러보아서 스크립트가 멀 하는지 알아보길 바란다.


Posted by 삼스

댓글을 달아 주세요

Linux2015. 8. 27. 09:24



sudo apt-get update

sudo apt-get upgrade

sudo apt-get install bison

sudo apt-get install g++

sudo apt-get install flex



/*1. flex 설치

flex download

tar xfv flex-2.5.39.tar.bz2

./configure 

make

sudo make insatll

*/


2. glib 설치

glib download : http://ftp.acc.umu.se/pub/gnome/sources/glib/2.46/glib-2.46.0.tar.xz

dependencies

- pkgconfig : http://www.freedesktop.org/software/pkgconfig/

- libiconv : http://www.gnu.org/software/libiconv/

- gettext : http://www.gnu.org/software/gettext/


2.1 pkgconfig

pkgconfig download

wget http://pkgconfig.freedesktop.org/releases/pkg-config-0.19.tar.gz

./configure

make

sudo make install


export PKG_CONFIG_PATH=/usr/local/bin/pkg-config 를 ~/.bash_profile에 추가


2.2 libiconv

libiconv downloa

http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz

./configure

make

sudo make install



2.3 gettext

gettext download

wget http://ftp.gnu.org/pub/gnu/gettext/gettext-0.19.6.tar.xz

./configure

make

sudo make install


2.4 libffi

libffi download

ftp://sourceware.org/pub/libffi/libffi-3.2.tar.gz

./configure

make

sudo make install



2.4 glib

glib download

wget http://ftp.gnome.org/pub/gnome/sources/glib/2.44/glib-2.44.1.tar.xz

sudo apt-get install zlib1g-dev

//sudo apt-get install libffi-dev


./configure --with-libiconv

make

sudo make install


아래 에러가 발생할 수 있다.

error while loading shared libraries: libiconv.so.2: cannot open shared object file:


/usr/local/lib에 libiconv.so.2가 있음에도 불구하고 link가 연결이 제대로 안되는 경우가 있다.

ldd $(which iconv)를 입력해서 아래와 같이 나오면 이런 경우이다.

녀애 

$ ldd $(which iconv)

linux-gate.so.1 => (0xb77b1000)

/usr/local/lib/preloadable_libiconv.so (0xb76cc000)

libiconv.so.2 => not found

libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb74f7000)

/lib/ld-linux.so.2 (0xb77b2000)


이 떄는 다음 명령을 한번 실행한다.


sudo ldconfig -v


다시 ldd명령을 수행하면 정상적으로 링크가 걸린것을 확인할 수 있다.


ldd $(which iconv)

linux-gate.so.1 => (0xb77b4000)

/usr/local/lib/preloadable_libiconv.so (0xb76cf000)

libiconv.so.2 => /usr/local/lib/libiconv.so.2 (0xb75c1000)

libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb7416000)

/lib/ld-linux.so.2 (0xb77b5000)



3. liboil

liboil download

http://liboil.freedesktop.org/download/liboil-0.3.17.tar.gz

./configure

make

make install


4. gstreamer

아래 패키지들을 모두 다운로드 및 설치 진행(http://gstreamer.freedesktop.org/data/src)

./configure && make && sudo make install

gstreamer

gst-plugins-base

gst-plugins-good/bad/ugly

gst-ffmpeg는 deprecated됨. gst-libav설치(https://bugzilla.gnome.org/show_bug.cgi?id=676260)

sudo apt-get yasm  nasm 먼저 설치 후 진행

순서로 설치


mp3파일 재생 테스트

gst-launch-1.0 playbin uri=file:///home/leeyosam/gmediarender/iu-knee.mp3

이 때 아래와 같은 에러가 날 수 있다.

gst-launch-1.0: symbol lookup error: gst-launch-1.0: undefined symbol: _gst_date_time_type

이 경우 ldconfig를 실행해주면 된다.

sudo ldconfig




Posted by 삼스

댓글을 달아 주세요

Linux2015. 8. 19. 11:24


GMediaRender는 UPnP media render중 하나이며 UPnP media server로부터 media content(video, audio, image)를 재생한다. 


UPnP A/V 는 3티어 시스템으로 구성된다.

Server, Renderer, Controller


UPnP controller로 UPnP Renderer에 UPnP Server의 컨텐츠를 재생하도록 명령을 내릴수 있다.


GMediaRenderer는 다음 3가지 디펜던시가 있다.

1. GNU C Compiler(gcc), 2.95 or later

2. libupnp 1.6.0 or later(BSD license)

3. GStreamer 0.10(LGPL)

그 외 GNU/Linux 라이선스로 제공되는 UPnP A/V 관련 오픈소스 프로젝트들

A/V Content Servers

- MediaTomb

- GeeXboX uShare

- GMediaServer

_ Cidero Internet Radio Server


A/V Content Renderers

- GMediaRender

- djmount

- Compère - Coherence-based media renderer

UPnP-Control for Mplayer

- A/V Content Controllers


Cidero Media Controller

- gUPnP universal control point (part of gupnp-tools)








Posted by 삼스

댓글을 달아 주세요

Linux2011. 10. 25. 17:42
오픈소스는 쉽게 말해 소스코드를 공개 하여 많은 개발자들이 참여하여 발전해나가자~ 뭐 이런 느낌입니다.
오픈소스라고 해서 무제한 사용이 가능한것이 아니라 지정된 라이센스에 따라서
저작권 보호도 되고 소스의 사용/복제/수정/배포의 제약이 있으므로 라이센스별 차이와 제한을 알고 사용해야할듯 합니다 ^^

개인적으로는 MIT 라이센스 완전편해요 >_<

The Code Project Open License (CPOL)

* 저작권 보호: 예
* 상용 소프트웨어에서 사용 가능: 예
* 버그 패치 및 기능 확장 제공의 의무: 아니오
* 명시적 특허권 행사 가능 여부: 예
* 사유 프로그램 (소스 비공개 프로그램)에서 사용 가능 여부: 예
* 라이센스 전파 여부: 아니오


The Common Development and Distribution License (CDDL)

* 저작권 보호: 예
* 상용 소프트웨어에서 사용 가능: 예
* 버그 패치 및 기능 확장 제공의 의무: 예**
* 명시적 특허권 행사 가능 여부: 예
* 사유 프로그램 (소스 비공개 프로그램)에서 사용 가능 여부: 예
* 라이센스 전파 여부: 아니오


The Microsoft Public License (Ms-PL)

* 저작권 보호: 예
* 상용 소프트웨어에서 사용 가능: 예
* 버그 패치 및 기능 확장 제공의 의무: 아니오
* 명시적 특허권 행사 가능 여부: 예
* 사유 프로그램 (소스 비공개 프로그램)에서 사용 가능 여부: 예
* 라이센스 전파 여부: 아니오


The Mozilla Public License 1.1 (MPL 1.1)

* 저작권 보호: 예
* 상용 소프트웨어에서 사용 가능: 예
* 버그 패치 및 기능 확장 제공의 의무: 예**
* 명시적 특허권 행사 가능 여부: 예
* 사유 프로그램 (소스 비공개 프로그램)에서 사용 가능 여부: 예
* 라이센스 전파 여부: 아니오


The Common Public License Version 1.0 (CPL)

* 저작권 보호: 예
* 상용 소프트웨어에서 사용 가능: 예
* 버그 패치 및 기능 확장 제공의 의무: 예**
* 명시적 특허권 행사 가능 여부: 예
* 사유 프로그램 (소스 비공개 프로그램)에서 사용 가능 여부: 예
* 라이센스 전파 여부: 아니오


The Eclipse Public License 1.0

* 저작권 보호: 예
* 상용 소프트웨어에서 사용 가능: 예
* 버그 패치 및 기능 확장 제공의 의무: 예**
* 명시적 특허권 행사 가능 여부: 예
* 사유 프로그램 (소스 비공개 프로그램)에서 사용 가능 여부: 예
* 라이센스 전파 여부: 아니오


The MIT License

* 저작권 보호: 예
* 상용 소프트웨어에서 사용 가능: 예
* 버그 패치 및 기능 확장 제공의 의무: 아니오
* 명시적 특허권 행사 가능 여부: 아니오**
* 사유 프로그램 (소스 비공개 프로그램)에서 사용 가능 여부: 예
* 라이센스 전파 여부: 아니오


The BSD License

* 저작권 보호: 예
* 상용 소프트웨어에서 사용 가능: 예
* 버그 패치 및 기능 확장 제공의 의무: 아니오
* 명시적 특허권 행사 가능 여부: 아니오**
* 사유 프로그램 (소스 비공개 프로그램)에서 사용 가능 여부: 예
* 라이센스 전파 여부: 아니오


The Apache License, Version 2.0

* 저작권 보호: 예
* 상용 소프트웨어에서 사용 가능: 예
* 버그 패치 및 기능 확장 제공의 의무: 아니오
* 명시적 특허권 행사 가능 여부: 예
* 사유 프로그램 (소스 비공개 프로그램)에서 사용 가능 여부: 예
* 라이센스 전파 여부: 아니오


The Creative Commons Attribution-ShareAlike 2.5 License

* 저작권 보호: 예
* 상용 소프트웨어에서 사용 가능: 예
* 버그 패치 및 기능 확장 제공의 의무: 아니오
* 명시적 특허권 행사 가능 여부: 아니오**
* 사유 프로그램 (소스 비공개 프로그램)에서 사용 가능 여부: 아니오**
* 라이센스 전파 여부: 예**


The zlib/libpng License

* 저작권 보호: 예
* 상용 소프트웨어에서 사용 가능: 예
* 버그 패치 및 기능 확장 제공의 의무: 아니오
* 명시적 특허권 행사 가능 여부: 아니오**
* 사유 프로그램 (소스 비공개 프로그램)에서 사용 가능 여부: 예
* 라이센스 전파 여부: 아니오


공개 커뮤니티에 대한 공헌 (라이센스 아님)

* 저작권 보호: 아니오**
* 상용 소프트웨어에서 사용 가능: 예
* 버그 패치 및 기능 확장 제공의 의무: 아니오
* 명시적 특허권 행사 가능 여부: 아니오**
* 사유 프로그램 (소스 비공개 프로그램)에서 사용 가능 여부: 예
* 라이센스 전파 여부: 아니오


The GNU Lesser General Public License (LGPL)

* 저작권 보호: 예
* 상용 소프트웨어에서 사용 가능: 예
* 버그 패치 및 기능 확장 제공의 의무: 예**
* 명시적 특허권 행사 가능 여부: 아니오**

* 사유 프로그램 (소스 비공개 프로그램)에서 사용 가능 여부: 예
* 라이센스 전파 여부: 예**


The GNU General Public License (GPL)

* 저작권 보호: 예
* 상용 소프트웨어에서 사용 가능: 예
* 버그 패치 및 기능 확장 제공의 의무: 예**
* 명시적 특허권 행사 가능 여부: 아니오**
* 사유 프로그램 (소스 비공개 프로그램)에서 사용 가능 여부: 아니오**

* 라이센스 전파 여부: 예**


열심히 표만들고 정리하다가 보니 예전에 저장해뒀던 문서를 발견!!
번역자분 블로그는 찾아가봤지만 폐쇄된것같네요.

출처 :: http://www.codeproject.com/info/Licenses.aspx
Posted by 삼스

댓글을 달아 주세요

  1. 눈을 감아봐 입가에 미소가 떠오르면 네가 사랑하는 그 사람이 널 사랑하고 있는거야.

    2013.07.13 00:57 [ ADDR : EDIT/ DEL : REPLY ]
  2. 다른 남자 부르면서 울거면 나한테 이쁘지나 말던지

    2013.07.14 09:10 [ ADDR : EDIT/ DEL : REPLY ]
  3. 눈을 감아봐 입가에 미소가 떠오르면 네가 사랑하는 그 사람이 널 사랑하고 있는거야.

    2013.07.17 06:30 [ ADDR : EDIT/ DEL : REPLY ]

Linux2011. 8. 3. 19:28

http://wiki.kldp.org/HOWTO/html/Adv-Bash-Scr-HOWTO/moreadv.html

Posted by 삼스

댓글을 달아 주세요

  1. T stage fashionable color changes, popular this year is all sorts of blue. The new product of moncler conference, us Also see many blue use. All kinds of different textures blue represents elegant temperament. Blue moncler women jackets jackets relaxed, quiet, steady. Shallow blue, turquoise blue will bring the appeal of enthusiasm. Put on moncler jackets will give a good impression. If you don’t want too visible “ride” fashionable attitude. If you still Want to gather together noisy. So, moncler blue both is the best choice. Blue both moncler Is a joker. Match with white, red, black, etc can all have pretty good effect. Today autumn, I also pursued Once the trend. I would have valued a blue both moncler. Now, I’ll just wait and buy it.

    2011.09.19 14:51 [ ADDR : EDIT/ DEL : REPLY ]
  2. Due to the special features of moncler jackets. In making moncler choose when the fabrics are mostly pure silk , snow spins, PI cao this kind of advanced fabrics. In the production process and its daily with a big difference between career. for The fabric is for both to the delicate. Like me, he took a long time to buy the accumulation of one moncler down jackets. So take good care of their life can extend. Let it every time with a new put on Samples. Of course there is some maintenance down products need to pay attention to details.

    2011.09.19 14:51 [ ADDR : EDIT/ DEL : REPLY ]
  3. When my mother mentioned this incident to one of my teachers and remarked that I didn’t know what caused the changes,the teacher theink it must be my moncler winter jackets has the effect.Yes,I have to admit that I love the jackets here even when I was only a kid. Then I am thinking a question:What will happen when I give my son the jackets of the brand,and maybe I will also see a different boy standing in front of me!Don’t you think so? I like my jackets of the brand!

    2011.09.19 14:52 [ ADDR : EDIT/ DEL : REPLY ]
  4. Now I am falling in love with my boy. To be honest,Since I met him,it seems that the sky is bluer. Mozart moves me to tears. But do you know what make me find my love?Yes ,it is moncler winter coats .The reason is that I have gotten these jackets and i look like a cover girl. “I’m the most beautiful girl!” he said to me.Yet it is these jackets here make me fing the confidence and my love.My beautiful life begin with the great jackets of the brand!

    2011.09.19 14:52 [ ADDR : EDIT/ DEL : REPLY ]
  5. The girl next door always have a pure and fresh and natural flavour. They need not too much adornment, but still show the green one side. Along with the water sweet laughter and kind smile. If you asked one of the boys, “do you like what girl?” I think he will answer you: “of course are natural girl. It’s like the neighbor sister pure and fresh feeling.” Also, I is one of the standard. discount christian louboutin with the girl next door and pure and fresh flavor. Concise wear build, can highlight girl lasting appeal.

    2011.09.19 14:56 [ ADDR : EDIT/ DEL : REPLY ]
  6. And the monster dre beats studio headphones make us focus on learning. I like listen to music when I was study. Even I can say without a good song, I can not get effective care. So this is why I love these monster headphones of the brand. And I am a person who wants to live a happy life during the rest of my life, so I want to use my heart to know the monster and learn it.

    2011.09.19 15:02 [ ADDR : EDIT/ DEL : REPLY ]
  7. Always I twirle and imagine that if I could let everything — the beautiful flowers, the sunshine, the wind , the attractive clothes — into that house in the banks of our own. Yes this is my dream. We could live in our beautiful dreams forever because we are girls. Girls need dream. But don’t you want to make the dream come true? Now follow the steps with the cheap true religion jeans and you will find all the amazing jeans of the brand you have dream in your happier nightmare have really lively come into your life.

    2011.09.19 15:02 [ ADDR : EDIT/ DEL : REPLY ]
  8. Safest clothing style is certainly set of pure black western-style clothes matches the pure white the shirt and the best cheap True Religion jeans, so long as the evening banquet is not the too grand words, does not need is the tie, loosened a grain of knot the neckband to be good. While if you have the self-confidence to yourself, may put on the pure white boldly the western-style clothes, this will let you be very outstanding. You should be certainly to put on the true leather shoes.

    2011.09.19 15:02 [ ADDR : EDIT/ DEL : REPLY ]
  9. 슬퍼서 우는거 아니야..바람이 불어서 그래..눈이 셔서..

    2013.07.13 03:26 [ ADDR : EDIT/ DEL : REPLY ]
  10. 창밖을 봐 바람에 나뭇가지가 살며시 흔들리면 네가 사랑하는 사람이 널 사랑하고 있는거야.

    2013.07.18 06:23 [ ADDR : EDIT/ DEL : REPLY ]

Linux2011. 4. 6. 17:19
출처 : http://hongten.egloos.com/416241

1. 우선 컴파일 시에 디버깅 정보를 담아야 한다.
gcc -g -o [프로그램명] [소스파일명]
디버깅 옵션인 -g 으로 컴파일하며, 최적화 옵션인 -O 은 주지 않도록 한다.

2. 실행방법
gdb [프로그램명]
gdb [프로그램명] [core파일명]
gdb [프로그램명] [실행중인프로세스pid]

3. 종료방법
q
Ctrl + d

4. 소스 찾아가기 (list)
l : main 함수를 기점으로 소스의 내용이 출력된다
l 10 : 10 행 주변의 소스가 출력되는데 10 - 5 행부터 10 + 5행까지 총 10행이 출려된다.
l func : func 함수의 소스를 출력
l -5 : 기본값으로 10줄이 출력된다고 가정하고, 다음에 출력될 라인이 11라인이라면, 10(마지막라인) - 5 라인을 중심으로 출력된다. 즉, 그대로 1~10라인이 출력된다.
l a.c:func : a.c 파일의 func 함수부분을 출력
l a.c:10 : a.c 파일의 10행을 기준으로 출력

5. 옵션
set listsize 20 : 한번에 출력하는 행의 갯수를 20개로 늘린다.
Enter : 마지막으로 수행한 명령어를 다시 수행한다

6. 프로그램 실행, 종료 (run, kill)
r : 프로그램 수행 (재시작)
r arg1 arg2 : arg1과 arg2를 인자로 프로그램 수행
k : 프로그램 수행종료

7. 역추적하기 (backtrace)
bt : 오류가 발생한 함수를 역으로 찾아간다.

8. 중단점 사용하기 (breakpoint, temporary 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일 때 작동
tb : 임시 중단점을 사용하는 것으로 한번만 설정되며, 그 이후에는 삭제된다.

9. 중단점 설정하기 (condition)
condition 2 var == 0 : 고유번호가 2번인 브레이크포인트에 var변수가 0일 때 동작하라고 설정

10. 중단점 삭제하기 (clear, delete)
cl func : func 함수의 시작 부분에 브레이크 포인트 지움
cl 10 : 10행의 브레이크 포인트 지움
delete 1 : 고유번호 1번의 브레이크 포인트를 지운
cl a.c:func : a.c 파일의 func함수의 브레이크 포인트 지움
cl a.c:10 : a.c 파일의 10행의 브레이크 포인트 지움
cl : 모든 브레이크 포인트 지움 

11. 중단점 정보보기 (information)
info b : 현재 설정된 브레이크 포인트의 정보를 보여준다
방향키Up/Down : 방향키 Up/Down을 누르면 히스토리 기능을 제공한다
info br + TAB : info br 로 시작하는 키워드가 히스토리에 있다면 뿌려준다
info TAB + TAB : info 뒤에 올 수 있는 인자 리스트를 보여준다
TAB + TAB : 현재 사용가능한 모든 명령어 리스트를 보여준다

12. 중단점 비활성화, 활성화 하기 (enable, disable)
disable 2 : 고유번호 2번인 브레이크 포인트 비활성화
enable 2 : 고유번호 2번인 브레이크 포인트 활성화

13. 디버깅 하기 (step, next, continue, until, finish, return, step instruction, next instruction)
s : 현재 출력된 행을 수행하고 멈추지만, 함수의 경우 함수의 내부로 들어가서 수행된다
s 5 : s를 5번 입력한 것과 동일
n : 현재 행을 수행하고 멈추지만, 함수의 경우 함수를 수행하고 넘어간다
n 5 : n을 5번 입력한 것과 동일
c : 다음 브레이크 포인트를 만날때 까지 계속 수행한다
u : for 문에서 빠져나와서 다음 브레이크 포인트까지 수행한다.
finish : 현재 함수를 수행하고 빠져나감
return : 현재 함수를 수행하지 않고 빠져나감
return 123 : 현재 함수를 수행하지 않고 빠져나감, 단, 리턴값은 123
si : 현재의 인스트럭션을 수행, 함수 호출 시 내부로 들어간다.
ni : 현재의 인스트럭션을 수행, 함수 호출 시 내부로 들어가지 않는다.

14. 감시점 설정 (watch)
watch i : i변수에 와치포인트를 설정하고 i변수가 바뀔 때마다 브레이크가 걸리면서 이전값과 현재값을 출력한다.

15. 변수 정보보기 (info, print)
info locals : 현재 상태에서 어떤 지역변수들이 있으며, 값은 어떠한지를 알 수 있다.
info variables : 현재 상태에서의 전역변수 리스트를 확인할 수 있다.
p lval : lval 값을 확인한다.
p func : func 함수의 주소값을 확인한다.
p pt : pt가 구조체라면 구조체의 주소를 확인한다
p *pt : pt가 구조체라면 구조체의 값을 확인한다.
p **pt : *pt가 구조체라면 구조체의 값을 확인한다.
info registers : 레지스트 값 전체를 한번에 확인한다.

16. 레지스트 값 및 포인터가 가리키는 구조체의 배열을 출력 (info, print)
info all-registers : MMX 레지스트를포함하여 거의 대부분의 레지스트 값을 확인한다.
p $eax : eax 레지스트의 값을 확인한다. ( ex_ eax, ebx, ecx, edx, eip ) 
p *pt@4 : 4크기의 배열로 gdb가 알 수 있으므로 4개의 크기만큼 가져와서 확인할 수 있다.

17. 중복된 변수명이 있는 경우 특정 변수를 지정해서 출력 (print)
p 'main.c'::var : main.c 파일에 있는 전역변수인 var 변수의 값을 출력
p hello::var : hello 함수에 포함된 static 변수인 var 변수의 값을 출력

18. 출력 형식의 지정
p/t var : var 변수를 2진수로 출력
p/o var : var 변수를 8진수로 출력
p/d var : var 변수를 부호가 있는 10진수로 출력 (int)
p/u var : var 변수를 부호가 없는 10진수로 출력 (unsigned int)
p/x var : var 변수를 16진수로 출력
p/c var : var 변수를 최초 1바이트 값을 문자형으로 출력
p/f var : var 변수를 부동 소수점 값 형식으로 출력
p/a addr : addr주소와 가장 가까운 심볼의 오프셋을 출력 ( ex_ main + 15 )

19. 타입이 틀릴 경우 타입을 변환하여 출력
p (char*)vstr : 실제 컴파일 시에 (void *)형으로 되어있었다고 하더라도 (char *)로 캐스팅 하여 보여줌

20. 특정한 위치 지정
p lstr + 4 : 예를 들어 lstr = "I like you." 라는 문자열은 "ke you."가 출력된다.

21. 변수 값 설정
p lval = 1000 : 변수값 확인 이외에는 설정도 가능하다.

22. 출력명령 요약 (print)
p [변수명] : 변수 값을 출력
p [함수명] : 함수의 주소를 출력
p/[출력형식] [변수명] : 변수 값을 출력 형식으로 출력
p '[파일명]'::[변수명] : 파일명에 있는 전역변수 값을 출력
p [함수명]::[변수명] : 함수에 있는 변수 값을 출력
p [변수명]@[배열크기] : 변수의 내용을 변수 배열의 크기 형태로 출력

23. 디스플레이 명령 (display, undisplay)
display [변수명] : 변수 값을 매번 화면에 디스플레이
display/[출력형식] [변수명] : 변수 값을 출력 형식으로 디스플레이
undisplay [디스플레이번호] : 디스플레이 설정을 없앤다
disable display [디스플레이번호] : 디스플레이를 일시 중단한다.
enable display [디스플레이번호] : 디스플레이를 다시 활성화한다.

24. 스택이란
스택의 경우는 상위 1기가는 커널에서 사용하며, 그 바로 아래 공간인 상위 0xBFFFFFFF 부터 하위로 늘어나게된다.
상세한 디버깅을 위해서는 -g 옵션으로 디버깅 정보와 --save-temps 옵션을 통해 어셈블리 코드를 얻어낼 수 있다.
상위 프레임으로 갈 수록 메인 함수에 가까워 지는 것이다.

25. 스택 프레임 관련 명령 (frame, up, down, info)
frame [N] : n번 스택 프레임으로 변경
up : 상위 프레임으로 이동
up [N] : n번 상위 스택 프레임으로 이동
down : 하위 프레임으로 이동
down [N] : n번 하위 스택 프레임으로 이동
info frame : 현재 스택 프레임 정보를 출력
info args : 현재 스택 프레임의 함수가 호출될 때 인자를 출력
info locals : 현재 스택 프레임의 함수내의 지역변수를 출력
info catch : 현재 스택 프레임의 함수내의 예외 핸들러를 출력

26. 스택 트레이스 하는법
b main 또는 원하는 곳에 브레이크 포인트를 잡고
오류가 발생할 때 까지 c를 통해 진행하면, 세그먼트 폴트 등의 오류가 발생하고 디버그가 멈추는데
여기서 bt 를 통해서 전체 스택 프레임을 확인하고 어떤 함수에서 호출시에 문제가 발생하였는지 확인
단, 일반적인 라이브러리에서는 오류발생 확률이 없다고 보고, 그 함수를 호출시에 문제를 의심한다.
다시 프레임을 이동하면서, 로컬변수와 전역변수 등을 확인하면서 디버깅이 가능하다.

27. 메모리 상태 검사 (x)
x/[범위][출력 형식][범위의 단위] : 메모리의 특정 범위의 값들을 확인할 수 있다.
이렇게 메모리를 직접 읽어보는 일은 -g 옵션을 가지고 컴파일 되지 않은 실행파일을 디버깅 할때에 자주 사용된다.
즉, x/10i main 과 같이 역 어셈블하여 해당 코드를 추측하는 것이다.

28. 출력형식
x/10 main : main 함수 시작부터 40바이트를 출력한다. 출력형식은 다음과 같다.
x/10t main : main 함수 시작부터 40바이트를 2진수로 출력
x/10o main : main 함수 시작부터 40바이트를 8진수로 출력
x/10d main : main 함수 시작부터 40바이트를 부호가 있는 10진수로 출력 (int)
x/10u main : main 함수 시작부터 40바이트를 부호가 없는 10진수로 출력 (unsigned int)
x/10x main : main 함수 시작부터 40바이트를 16진수로 출력
x/10c main : main 함수 시작부터 40바이트를 최초 1바이트 값을 문자형으로 출력
x/10f main : main 함수 시작부터 40바이트를 부동 소수점 값 형식으로 출력
x/10a main : 가장 가까운 심볼의 오프셋을 출력
x/10s main : 문자열로 출력
x/10i main : 어셈블리 형식으로 출력

29. 범위의 단위 (기본 word - 4바이트)
x/10b main : byte - 1바이트 단위 - 10바이트 출력
x/10h main : halfword - 2바이트 단위 - 20바이트 출력
x/10w main : word - 4바이트 단위 - 40바이트 출력
x/10g main : giant word - 8바이트 단위 - 80바이트 출력

30. 디스어셈블링 (disas)
disas func : 어셈블리 코드를 좀 보편적으로 보기 위한 명령어
disas 0x8048300 0x8048400 : 특정 주소 범위사이의 어셈블리 코드를 보기

31. 함수호출 (call)
call func(arg1, arg2) : 특정함수 func를 arg1, arg2 파라메터를 포함하여 호출하고, 반환값은 출력

32. 점프 (jump)
jump *0x08048321 : 해당 주소로 무조건 분기하여 인스트럭션을 계속 수행한다.
jump 10 : 무조건 10행으로 분기하여 수행한다.
jump func : func 함수로 무조건 분기하여 수행한다.

33. 시그널 전송 (signal)
info signals : 보낼 수 있는 시그널의 종류를 확인할 수 있다.
signal SIGKILL : 디버깅 대상의 프로세스에게 KILL 시그널을 보낼 수 있다.

34. 메모리의 특정 영역에 값을 설정 ( set )
set {타입}[주소] = [값] : p 명령 대신에 set 을 통해서 메모리의 특정 주소에 저장하는 것이 더 일반적이다
set {int}0x8048300 = 100 : 해당 주소에 100의 값을 입력한다.

35. gdb 환경설정 (set)
info set : 변경 가능한 환경설정 정보를 출력한다.
info functions : 함수들의 리스트를 출력
info types : 선언된 타입에 대한 리스트를 출력
set prompt psyoblade: : 프롬프트를 psyoblade: 로 변경할 수 있다.
set print array on : 배열을 출력할 때 한 행에 출력하는 것이 아니라 여러 행에 출력한다.

36. 기타 info 를 통해 알 수 있는 정보들
address catch extensions handle objects set stack tracepoints
all-registers common files heap program sharedlibrary symbol types
architecture copying float leaks registers signals target variables
args dcache frame line remote-process source terminal warranty
breakpoints display functions locals scope sources threads watchpoints
Posted by 삼스
TAG GDB

댓글을 달아 주세요

Linux2009. 7. 22. 13:36
/etc/bash.bashrc 를 수정하면 됨.
Posted by 삼스
TAG bashrc, Linux

댓글을 달아 주세요

  1. 슬퍼서 우는거 아니야..바람이 불어서 그래..눈이 셔서..

    2013.07.13 02:42 [ ADDR : EDIT/ DEL : REPLY ]

Linux2009. 7. 21. 13:34

특정 문자열 포함한 파일 찾기.

http://cafe.naver.com/bigcase.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=65

참조 하시구여.

find . \( -type f -name '*' \) -exec grep -i -l "STRING_TO_FIND" '{}' \;

에서 STRING_TO_FIND 에 찾을 문자열을 넣으시면 되겠습니다.

더 간단한 방법

.bashrc에 아래 alias추가

alias xgrep='find . -type f | xargs grep'





Posted by 삼스
TAG find, grep, Linux

댓글을 달아 주세요

  1. 귀를 기울여봐 가슴이 뛰는 소리가 들리면 네가 사랑하는 그 사람 널 사랑하고 있는거야.

    2013.07.14 07:56 [ ADDR : EDIT/ DEL : REPLY ]

Linux2009. 7. 16. 14:34
http://blog.naver.com/jaeworld?Redirect=Log&logNo=150044691988

Xp에서 리눅스 xWindow 사용법 『 WindowKnowledge 

2009/03/22 00:10

복사http://blog.naver.com/jaeworld/150044691988

1. 해당 리눅스 서버의 ssh의 설정 변경

* 설정파일 위치 : /etc/ssh/ssh_config

- 설정 : # vi /etc/ssh/ssh_config

#HOST

#ForwardAgent no

#ForwardX11 no -> 주석 해제후 "no" 부분을 "yes" 로 변경

- ssh 재시작 : # service sshd restart 혹은 # /etc/init.d/sshd restart

2. Putty 및 Xming 다운로드

- putty : HangulPuTTY-0.58.h2

- Xming : Xming-6-9-0-31

3. Putty 및 Xming 설치

4. XLanuch 실행 (환경설정)

4-1. One Window 를 선택 후 "다음" 선택

4-2. Start no Client 선택 후 "다음" 선택

4-3. Clipboard 체크 후 "다음" 선택

4-4. Save Configuration 선택하여 설정 저장 후 "마침" 선택

5. Putty 설정

5-1. 호스트명에 접속할 리눅스 서버의 ip 혹은 호스트명을 입력

5-2. 좌측 메뉴에서 접속(Connection) > SSH > X11 선택

5-3. X11 포워딩 사용(Enable X11 forwarding) 체크 후 X 디스플레이 위치(X display location)

항목에 " localhost:0 " 입력

5-4 좌측 메뉴에서 세션(Session) 메뉴 선택 후 입력한 내용 저장 후 하단의 열기 버튼 선택

6. config.xlaunch (Xlaunch 설정 파일) 실행

7. putty로 리눅스 서버 접속

7-1. 로그인

7-2. 컨솔창에서 다음 명령어 실행 #gnome-session

Posted by 삼스

댓글을 달아 주세요

  1. 눈을 감아봐 입가에 미소가 떠오르면 네가 사랑하는 그 사람이 널 사랑하고 있는거야.

    2013.07.13 15:17 [ ADDR : EDIT/ DEL : REPLY ]

Linux2009. 7. 8. 22:19
http://linux.softpedia.com/progDownload/Ubuntu-Intrepid-Ibex-Download-39147.html
Posted by 삼스

댓글을 달아 주세요

  1. 창밖을 봐 바람에 나뭇가지가 살며시 흔들리면 네가 사랑하는 사람이 널 사랑하고 있는거야.

    2013.07.13 20:03 [ ADDR : EDIT/ DEL : REPLY ]
  2. 사람들은 죽을걸 알면서도 살잖아 .사랑은 원래 유치한거에요

    2013.07.15 16:37 [ ADDR : EDIT/ DEL : REPLY ]