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

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


보통 1차원 배열의 배열 이름은 포인터를 의미한다...
예를 들어  int arr[5];에서 arr은 int 형 포인터 변수이다...

그러면 2차원 배열에서의 배열 이름은 무엇을 의미할까??

2차원 배열의 배열 이름도 역시나 포인터를 의미하는데, 이 포인터의 포인터 타입은 무엇일까?
포인터 타입에는 이동에 대한 정보가 들어 있어야 한다.
예를 들어 int arr[2][4];에서 arr을 포인트 연산 arr++을 해보면 포인터 주소가 16씩 바뀌는 걸 알 수 있다.
그러므로 위의 2차원 배열 이름인 arr의 포인트 타입은 포인터 연산시 배열요소를 4칸씩 건너뛰는 int형 포인터 변수이다.

int (*arr)[4]  //  int arr[2][4] 이 둘은 포인터 타입이 같다...

참고로 int *arr[4]은 배열의 선언이다... 이것은 int형 포인터 변수 4개를 저장할 수 있는 배열을 선언하는 것이다.


1. ollydbg 다운로드한다.(http://www.ollydbg.de)

2. ollydbg 폴더내에 UDD,Plugin 폴더를 만들자.

3. www.tuts4you.com에서 win32.hlp 파일을 다운로드 받자.
   (우측 상단에서 win32.hlp로 검색한 후, "Win32 Programmers Reference"메뉴를 클릭하면 다운로드
    받을 수 있다)

4. ollydbg 폴더내에 Cmdline.dll과 Bookmark.dll을 Plugin폴더로 이동 시키자.

5. Ollydbg를 실행하고, Option -> Appearance -> Directories를 열고
   UDD와 Plugin 경로를 셋팅하자.

6. Jit(Just-in-time debugging) 설정과 Add explorer를 설정 하자.

7. 다운로드 받은 win32.hlp 파일을 help 메뉴에 연결시키자.(Help -> select API help file)

8. Option -> Debgging options 에서 Event탭에 Entry point of main module로 시작지점을 잡아주자.

9. 옵션 값들은 ollydbg.ini파일에 저장 되므로 파일을 직접 수정해서 고치는 것도 가능하다.

   ex) Show jump direction=1
       Show jump path=1
       Show jumpfrom path=1
       Show path if jump is not taken=1  >>  점프위치가 화살표로 보기 좋게 표시 된다.

 

유투브에서 삼성 MLC SSD 256GB짜리 24개로 레이드를 구성한 시스템을 보았다.
정말 성능이 경악을 금치 못 할 정도다... 저 정도 시스템을 구축하려면 어느정도의 금액이 들지...
향후 몇 년 안에 저런 시스템을 써볼수 있을지 의문이다...
컴퓨터로 하는건 별로 없으면서 욕심만 많은것 같다 ㅎㅎ;;
 리눅스용 무료 웹하드인 shade webhard를 설치해 보겠다...
APM를 구성 해놓았다고 가정하고 설명하며, 일단 shade webhard 소스와 shade_webhard.sql를 다운받아야 한다. 아래 링크에서 다운 받자.


 전체적인 설치 과정은 간단하게 2부분으로 나눌 수 있다. 첫째 DB 셋팅, 둘째 shade_webhard에서의 설정정도다.

1. DB로 MySQL을 이용한다. 일단 web hard에서 사용할 DB를 생성한다.

   mysql -u root -p
   Enter password:                 (root계정으로 로그인한다.)

   >CREATE DATABASE webhard;             (데이터베이스를 생성한다)
   >show databases;                                (데이터베이스가 생성 되었는지 확인한다)

2. 데이터베이스가 생성 되었으면, 두번째 shade_webhard.sql를 적용 시키자.
 먼저 vi를 이용하여 shade_webhard.sql 파일을 열어서 관리자 계정 아이디와 패스워드를 수정하자.

INSERT INTO webhard_backoffice_user VALUES ('', 'admin', '', password('shade'), '관리자', '', '', '', '');
부분이 보일 것이다... 'admin' 부분이 관리자 아이디이며, 'shade'부분에 패스워드를 입력하면 된다.

   mysql -u root -p webhard < shade_webhard.sql        (shade_webhard.sql를 적용시킨다)

mysql에 root로 접속해서 적용이 제대로 되었는지 확인해보자.
   mysql -u root -p
   use webhard;
   show tables;

3. shade_webhard 소스를 압축해제한 뒤, 홈페이지 루트폴더에 복사한다.
 먼저 include 폴더안에 있는 dbconnect.php 파일을 연다. DB에 접속할 계정에 대한 셋팅을 한다.
shade_webhard/include/dbconnect.php
$db_host = "localhost"; // mysql host
$db_user = "root"; // mysql username
$db_pass = "패스워드"; // mysql password
$db_name = "webhard"; // mysql db name
* 여기서 굳이 root를 이용할 필요는 없다. 따로 사용자 계정을 만들어서 사용해도 된다

 include 폴더안에 있는 config.php 파일을 연다.
shade_webhard/include/config.php
$Conf[web_url]    = "http://(ip주소 또는 도메인)/shade_webhard"; //웹하드의 HTTP URL 전체
$Conf[web_path] = "/shade_webhard"; // 웹하드의 HTTP URL에서 도메인을 뺀 나머지
$Conf[dir_doc]    = "/var/www/html/shade_webhard"; // 서버상에서 웹하드가 위치한 절대경로
$Conf[dir_home] = "/public_webhard"; //사용자별 계정이 위치한 절대경로


4. 이제 웹하드가 잘 작동하는지 테스트 해보자

http://(URL주소)/shade_webhard/backoffice
-> 관리자 계정으로 로그인이 가능하다.
-> 환경설정 및 사용자 계정 관리가 가능하다.
http://(URL주소)/shade_webhard
-> 사용자 계정으로 로그인이 가능하다.
-> 웹하드 사용이 가능하다.
작년 여름에 오버해서 쓰던걸 발열과 전기세의 압박으로 오버를 풀었다가 이번에 다시 오버를 하게 되었다.그때 시스템이랑 지금 시스템이랑 바뀐 점은 램이 하이닉스 1G*2에서 EKMEMORY 2G*2로 바뀐것 뿐이다. 예전 셋팅 그대로 이용하니 수월하게 오버가 가능했다...


인텔번 20회 통과했다...


프라임95 6시간30분 통과했다...

세부 셋팅은 대충 이렇다...
   CPU 전압 : 1.30v(바이오스상)
                    1.27v(아이들시)
                    1.26v(풀로드시)
   North전압 : 1.40v
   Sorth전압 : 1.05v
   Ram 전압 : 1.90v
   나머지셋팅은 auto이다.
온도는 대충 에버레스트 코어온도로 아이들시29-31도, 풀로드시 58-61도 정도였다.

 개인적으로 시스템에 너무 무리가 가는 극오버는 선호하지 않는다. 현재 수준의 오버가 사용하기가 딱 적당한 수준인 것 같다. 확실히 비오버시와 성능은 체감된다.

Q6600 컨츠필드 구입한지 2년쯤 된 것 같은데, 아직까지 요즘 나오는 cpu와 견주어 손색이 없는 명품 cpu인 것 같다. 한 2년은 사용하는데 무리 없을 것 같다. 하지만 시스템에 욕심이 많은 나에게 2년정도 더 사용할지는 의문이 든다.
1. root 계정으로 접속한다.

   mysql -u root -p

2. mysql db에서 패스워드를 변경한다.

  >use mysql;
  >update user set password=password('패스워드') where user='유저명';

3. 패스워드가 설정 된걸 확인 할 수 있다.

   >select host,user,password from user;
MySQL에 root로 접속 한 뒤
use mysql;
select host,user from user;
현재 생성된 db의 사용자 계정들을 확인할 수 있다.

사용자 계정 생성
GRANT USAGE ON [database명].[table명] TO [user명]@[server명] IDENTIFIED BY ['패스워드'];
ex) grant usage on database.* to user1@localhost identified by 'user1';

생성된 사용자 계정 권한 설정
GRANT ALL ON [database명].[table명] TO [user명]@[server명];    =>  모든 권한을 준다
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,INDEX,ALTER ON [database명].[tabel명] TO [user명]@[server명];   => 특정 권한을 준다
ex) grant all on database.* to user1@localhost;
     grant select,insert,update,delete,create,drop.index,alter on database.* to user1@localhost;

REVOKE ALL ON [database명].[table명] FROM [user명]@[server명];    =>  모든 권한을 삭제한다
REVOKE DROP ON [database명].[table명] FROM [user명]@[server명];    => 특정 권한(drop)을 삭제한다
ex) revoke all on database.* from user1@localhost;
     revoke drop,index on database.* from user1@localhost;

계정 권한을 새로 로드
FLUSH PRIVILEGES;
flush privileges;

사용자 계정 삭제
DROP USER [user명]@[server명];
ex) drop user user1@localhost;

데비안에서 adduser나 useradd를 이용하여 사용자 계정을 생성할 때,

생성 되는 사용자 홈 디렉토리의 디폴트 퍼미션값을 설정 하려면 다음과 같이 하면 된다.

 

1. useradd로 사용자를 생성할 경우 : /etc/login.defs에서 UMASK 값으로 사용자의 홈 디렉토리의 퍼미션이 결정된다.

   ex) UMASK = 022     : 사용자 홈 디렉토리가 755퍼미션으로 생성 된다.

 

2. adduser로 사용자를 생성할 경우 : /etc/adduser.conf에서 DIR_MODE=퍼미션 으로 사용자의 홈 디렉토리의 퍼미션이 결정된다.
   ex) DIR_MODE=755     : 사용자 홈 디렉토리가 755퍼미션으로 생성 된다.


ntpdate는 시스템시간을 타임서버와 동기화 시켜주는 툴이다.

 

사용법 : ntpdate 시간서버

ex) ntpdate time.kriss.re.kr  => 한국표준시간으로 시스템시간이 셋팅된다

 

/etc/default/ntpdate 라는 파일에 NTPSERVERS="시간서버"로 셋팅해주면

매부팅때마다 ntpdate의 init 스크립트에 의해 자동으로 시간이 설정됩니다.^^

ex) NTPSERVERS="time.kriss.re.kr"


+ Recent posts