[XCODE] DEBUGING 팁

개발/iOS 2010. 11. 16. 17:48
요즘 Xcode를 만져보고 있는데, 어렵긴 어렵다. 스타일이라고 해야할지 접근 방식이라고 해야할지 모르겠지만 환경 자체가 너무나 이질적인지라 .. 쓰다보니 디버깅 관련된걸 메모해둬야 할 것 같아서 몇 가지 적어본다 (사실 요즘 보고 있는 책에 나오는 내용이긴 하지만;)


- 좀비 객체 만들기 ; 
객체를 미리 해제하는 코드에서 오류가 발생할 경우, 문제의 개체를 좀비 상태로 만들어 해제를 막고 객체의 상태를 체크할 수 있다. 이는 실행 파일 설정을 변경해야 하는데, Executable Info의 Arguments 탭에서 다음 환경 변수를 추가한다 :
NSZombieEnabled=YES
CFZombieLevel=16

- NSAssert 해제 ;
NSAssert의 검증을 막으려면 Project/Build Info의 Build 탭에서 설정을 추가하면 된다. GCC 4.0 - Preprocessing 하단의 Preprocessor Macros에 NS_BLOCK_ASSERTIONS를 정의하면 된다.
(어째서 이걸 '정의'해야 Assert의 검증을 'Block'하는건지... 이게 GCC 스타일인가?;)

- 예외 발생시 브레이크 포인트 걸기 ;
XCode에서는 디버깅 시 예외가 발생했을 때 자동으로 예외가 발생한 행에서 브레이크포인트가 걸리지 않는다. (그러니까 대체 왜!) Breakpoints 창을 열어서 objc_exception_throw 심볼릭 브레이크포인트를 추가해야 한다.
참고로 malloc_error_break는 alloc이 실패할 때 발생하는 듯 ... 하지만 왜 이건 애플 레퍼런스 라이브러리에도 안 나오는지가 미스테리. 뭐지?

'개발 > iOS' 카테고리의 다른 글

[IOS] image size  (0) 2010.11.28
[XCODE] Breakpoint가 안먹을 때  (0) 2010.11.28
[XCODE] 메모리 관리 규칙  (0) 2010.11.16
[XCODE] Redefine NSLog  (0) 2010.11.16
[IOS] Core Data에서 SQLite 사용하기  (0) 2010.11.01
Posted by 나랑살자
,
NFS 설치

RPM 명령어 이용 패키지 설치 확인

# rpm -qa | grep nfs
nfs-utils-1.0.6-70.EL4

# rpm -qa | grep portmap
portmap-4.0-63

yum으로 설치
# yum install portmap nfs-utils* libgssapi

rpm 으로 설치시

# wget http://mirror.oss.or.kr/pub/centos/4.4/os/i386/CentOS/RPMS/nfs-utils-lib-1.0.6-3.i386.rpm
# wget http://mirror.oss.or.kr/pub/centos/4.4/os/i386/CentOS/RPMS/libgssapi-0.8-1.i386.rpm
# rpm -Uvh *.rpm

 

NFS 서버 데몬 구동

# ntsysv
--NFS, portmap 자동 실행, iptables 방화벽을 체크 해제하고 nfs를 체크한다.

# /etc/rc.d/init.d/portmap start
portmap (을)를 시작합니다: [  확인  ]

# /etc/rc.d/init.d/nfs start
NFS 서비스를 시작하고 있습니다:  [  확인  ]
NFS 쿼터를 시작하고 있습니다: [  확인  ]
NFS 데몬을 시작함: [  확인  ]
NFS mountd를 시작하고 있습니다: [  확인  ]

NFS 서버의 공유목록을 관리하는 파일
# vi /etc/exports

-공유디렉토리 접근할 호스트(옵션)

예) /home/www 192.168.1.1(rw,sync)
-> 192.168.1.1 호스트의 접속 허용

예)/home/www 192.168.1.0/255.255.255.0(rw,sync)
-> 192.168.1.* 호스트의 접속 허용

설정 옵션
rw : 읽기, 쓰기 가능
ro : 읽기만 가능
secure : 클라이언트 마운트 요청시 포트를 1024 이하로 한다.
noaccess : 액세스 거부
root_squach : 클라이언트의 root가 서버의 root권한을 획득하는 것을 막는다
no_root_squash : 클라이언트의 root와 서버의 root를 동일하게 한다
sync : 파일 시스템이 변경되면 즉시 동기화한다.
all_squach : root를 제외하고 서버와 클라이언트의 사용자를 동일한 권한으로 설정한다.
no_all_squach : root를 제외하고 서버와 클라이언트의 사용자들을 하나의 권한을 가지도록 설정한다. 





 

공유 디렉토리를 만든다
# mkdir data
# chomd 777 data

 
확인
# exportfs -v
/home/data      192.168.1.1(rw,wdelay,root_squash)
-나오지 않는다면 nfs 를 재가동 해보시길 바랍니다.
# /etc/rc.d/init.d/nfs restart

[exportfs 명령어 사용법]

exportfs 명령어는 nfs서버를 다시 시작하지 않고도 공유목록을 수정할 수 있다.
- a : /etc/exports파일을 읽어 들인다.
- r : /etc/exports파일을 다시 읽어 들인다.
- u IP:/디렉토리 : 입력한 디렉토리를 공유목록에서 제외한다.
- v : 현재의 공유 목록을 확인한다.

2. 클라이언트 서버
# mkdir /home/data

mount 명령어로 NFS 서버의 공유 디렉토리를 마운트 시킨다.

# mount -t nfs 192.168.1.1:/data /home/data

 

만약 마운트가 되지 않으면 방화벽 사용 중지 (서버쪽 클라이언트쪽모두)
# /etc/init.d/iptables stop

nfs 재가동(서버측)
# /etc/rc.d/init.d/nfs restart

마운트 확인
# cat /etc/mtab | grep /home/data
192.168.1.1:/home/data /home/data1 nfs rw,addr=192.168.1.1 0 0

 

# df -h
 Filesystem            Size  Used Avail Use% Mounted on
/dev/sda2             6.8G  122M  6.3G   2% /
/dev/sda1              99M  8.5M   86M   9% /boot
none                  252M     0  252M   0% /dev/shm
/dev/sda8              54G   85M   52G   1% /home
/dev/sda7            1012M   34M  927M   4% /tmp
/dev/sda3             6.8G  919M  5.5G  15% /usr
/dev/sda5             3.9G   79M  3.6G   3% /var
192.168.1.1:/home/data
                       54G   85M   52G   1% /home/data1

부팅시 자동 마운트

# vi /etc/fstab

192.168.1.1:/home/data  /home/data              nfs     defaults        1 2

 

마운트 해제시
# umount /home/data

 

마운트가 안될때
마운트고 안될시 클라이언트 서버에도
NFS 설치 및 portmap 등 재가동 확인해보세요

'개발 > Linux' 카테고리의 다른 글

[LINUX] Subversion설치  (0) 2011.02.07
[LINUX] CentOS 5.5에 CMake 설치  (0) 2010.12.20
[LINUX] FIND AND REPLACE with SED  (0) 2010.12.13
[LINUX] HDD 복사  (0) 2010.10.28
[LINUX] TIME SYNC  (0) 2010.10.28
Posted by 나랑살자
,

vi /Applications/eclipse/Eclipse.app/Contents/MacOS/eclipse.ini

showsplash org.eclipse.platform
--launcher.XXMaxPermSize 512m
-vmargs
-Xms40m
-Xmx512m
-XX:MaxPermSize=512m
-Xms40m
-Xmx512m

Posted by 나랑살자
,