FILE* fp = fopen("text.txt", "rt");

if(fp == NULL){

    exit(-1);

}

fseek(fp, 0L, SEEK_END);

unsigned file_size = ftell(fp);

fseek(fp, 0L, SEEK_SET);

1. android dalvik debugging


디버깅은 개발에 있어서 정말 중요하다.

달빅을 개발할 때 버추얼 머신 디버깅을 하면서 개발 효율이 많이 올라갔었다.

그당시 참고 사이트.

http://androidkr.blogspot.kr/2010/10/android-gdb-dalvik-vm.html


2. android art debugging


dalvik은 버추얼 머신위에서 어플리케이션이 돌아가기때문에 달빅을 디버깅을 하면 된다. 어플리케이션을 돌리는 프로그램이 app_process 이므로 이것을 시작으로 디버깅을 시작했다.

현재 내가 하는 것은 art에서 돌아가는 시스템 프로그램들이다.



3. 준비물 확인


  • gdbserver - 안드로이드 디바이스에서 프로그램과 엮겨 호스트의 gdb의 입력을 받아들인다.
  • gdb - 호스트에서 gdbserver와 통신하며 프로그램을 디버깅 한다.

4. 호스트 준비하기

호스트는 우리의 컴퓨터이다. 컴퓨터를 준비하고 소스코드를 다운받고 빌드한다.


5. 머신 준비하기

나의 머신은 nexus 7. 4.에서 준비한 빌드 이미지를 머신에 플래시 한다.
이 과정은 다른 곳에도 많으니 생략하자.


6. 호스트와 머신간 통신

호스트를 통해 머신의 프로그램을 디버깅 할 것이기 때문에, 당연히 호스트와 머신은 통신을 할 수 있어야 한다.
이 통신을 하기 위해 로컬 네트워크를 이용한다. 로컬 허브에 머신을 와이파이로 연결하고, 머신으로 포트를 포워딩 한다.




7. 머신에서 해야할 일


안드로이드 쉘에 접속한다.

$adb shell

디버깅 하고자 하는 프로그램을 실행한다. 여기서 프로그램은 안드로이드 어플리케이션이 아닌 art의 프로그램이다.

이 프로그램의 PID를 확인한다.

#ps

이 프로그램을 gdbserver에 등록한다.

#gdbserver 163.152.73.73:2345 --attach 3403

위에서 IP주소는 내 서버 호스트의 IP 주소이고 port는 6.에서 설정한 port이다. --attach 뒤의 숫자는 디버깅할 프로그램의 PID.


다음과 같이 메세지가 나온다.

gdbserver 163.152.73.73:2345 --attach 3332

Attached; pid = 3332

Listening on port 2345

Remote debugging from host 163.152.73.73


이제 호스트에서 디버깅을 하면 된다.



8. 호스트에서 해야할 일


머신과 통신할 gdb가 있어야 한다.

나의 경우는 arm 머신이기 때문에 다음의 gdb를 이용한다.

prebuilts/gcc/linux-x86/arm/arm-eabi-4.8/bin/arm-eabi-gdb


이때 7에서 실행하는 프로그램을 명시해 주어야 한다. art에서 사용하는 프로그램 대부분은 다음 path에 있다.

out/target/product/flo/system/bin


adb를 디버깅한다고 가정하면.....

$android-5.0.1_r1/prebuilts/gcc/linux-x86/arm/arm-eabi-4.8/bin/arm-eabi-gdb out/target/product/flo/symbols/system/bin/adb

와 같다.


그렇게 되면 gdb 가 실행이 된다.

그리고 나서 이 프로그램의 symbol들을 알 수 있는 path를 지정해 준다.

$set solib-search-path out/target/product/flo/symbols/system/lib


이제 gdbserver에 접속하도록 하자.

(gdb) target remote 163.152.73.82:2345

위에서 IP주소는 나의 허브 아이피 주소이고, 포트는 머신으로 포워딩된 포트이다.


Remote debugging using 163.152.73.82:2345

위와 같이 메세지가 나오면서 연결이 된다.






기타 사항


맨처음에 가장 고생했던 것.

머신에서 gdbserver를 실행하려고 하면 계속 다음과 같은 메세지를 뱉었다.

Cannot attach to lwp 3403: Operation not permitted (1)

Exiting

그 이유는 내가 디버깅 하고자 한 프로그램이 root권한을 필요로 했던것.


이를 해결 하기 위해 adb를 root 권한으로 실행한다.

$adb root

$adb shell


이후에 안드로이드 쉘 프롬프트가 root로 변한 것을 볼 수 있고, 위와 같은 에러도 발생하지 않았다.







소스 폴더를 make를 이용해 빌드를 할 때 특정 파일만 컴파일 옵션을 조절하고 싶을 때가 있다.

make파일을 수정 해도 되지만 더 간단한 방법이 있어 소개한다.


파일 처음에 다음을 입력하면 된다.


#pragma GCC optimize ("0")


이것은 컴파일 옵션을 -O0로 하라는 것이고 1, 2, 3중 하나를 적으면 된다.

'linux > 기타등등' 카테고리의 다른 글

리눅스 무료 HTML5 편집기 Aptana  (0) 2014.08.02
이미지 편집 프로그램 김프  (0) 2014.08.02
java version 변경  (0) 2014.07.15
Sun/Oracle JDK 다운로드 및 설치  (0) 2014.07.09
linux 파일 redirection  (0) 2014.05.19

HTML5 편집을 위해 편집 프로그램이 필요하다.

보통 MS의 visualstudio를 사용하거나 Adobe의 dreamweaver를 사용하게 된다.

하지만 무료 프로그램도 좋은 것이 있다. 그중 하나인 Aptana를 소개한다.


인터넷에서 Aptana를 검색하고 



다운로드를 눌러준다.



그러면 자신의 OS에 맞게 다운로드를 할 수 있다.

eclipse의 plug-in형태로 받을 수도 있는데 그냥 풀버젼으로 받아서 사용하자.



다운로드 받은 압축파일을 풀어 주고




AptanaStudio3을 실행하면 된다.



혹시 위와 같은 메세지가 뜬다면 jre나 jdk를 설치해 주면 된다.



워크스페이스를 설정해 준다.

일단 프로젝트를 만들고 테스트를 해보자.






프로젝트가 만들어 졌다. 프로젝트를 우클릭한후 new from template->HTML->HTML5를 누르면 HTML5형식의 파일이 만들어 진다.



만들어진 파일. 이 파일을 실행하면 다음과 같은 페이지가 나온다.

언어를 ko로 바꾸어 주고 중간에 한글을 넣어보자.



한글 출력도 잘 된다.


자신의 원하는 디자인을 해주면 된다.

'linux > 기타등등' 카테고리의 다른 글

gcc 특정파일 옵션 설정.  (0) 2014.08.07
이미지 편집 프로그램 김프  (0) 2014.08.02
java version 변경  (0) 2014.07.15
Sun/Oracle JDK 다운로드 및 설치  (0) 2014.07.09
linux 파일 redirection  (0) 2014.05.19

집 컴퓨터에 우분투를 설치하고 컴퓨터를 사용하는데, 이미지를 편집할 일이 생겼다. 그래서 설치한 김프.

역시 리눅스엔 무료이면서 좋은 프로그램이 많다.

먼저 우분투 소프트웨서 센터에서 김프를 검색하고,



설치를 하도록 하자.




김프에 대한 설명도 해준다.

김프의 아이콘이다. 이것을 클릭하면 김프가 설치된다.



김프 실행중.



실행화면이다.

파일->열기로 사진을 열 수도 있지만, 열고 싶은 사진을 가운데 창에 드래그 해도 열수있다.

'linux > 기타등등' 카테고리의 다른 글

gcc 특정파일 옵션 설정.  (0) 2014.08.07
리눅스 무료 HTML5 편집기 Aptana  (0) 2014.08.02
java version 변경  (0) 2014.07.15
Sun/Oracle JDK 다운로드 및 설치  (0) 2014.07.09
linux 파일 redirection  (0) 2014.05.19

MONACO.TTF


개발 할 때 사용하면 유용한 글 꼴.

monaco.ttf

이클립스를 쓸 일이 있어서 이클립스를 다운로드 받았는데 어느새 luna 버전이 되었다.

이클립스를 받고 압축을 풀고 실행을 했더니 다음과 같은 에러를 뱉으며 실행이 안되었다.




내 JVM 버전은 1.6인에 이클립스를 쓰려면 1.7이나 그 이상의 JVM을 받으라는 이야기다.


그래서 java 버젼을 확인해 보았다.

$ java -version


java version "1.6.0_45"

Java(TM) SE Runtime Environment (build 1.6.0_45-b06)

Java HotSpot(TM) 64-Bit Server VM (build 20.45-b01, mixed mode)


정말 버전이 1.6이네...

안드로이드 작업을 하느라 1.6을 받아서 썼으니 당연하지.


$ sudo apt-get install oracle-java7-installer

그렇다면 일단 1.7 버젼을 설치하자.

설치에 문제가 있다면 아래 링크를 이용 해 보자.

Sun/Oracle JDK 다운로드 및 설치



새로 설치가 되었다면 자동으로 버전이 1.7로 바뀌었을 것이다.

나같은 경우엔 이미 설치가 되어 있었다.


이때는 alaternatives를 이용해 버전을 바꿔주자.


$ sudo update-java-alternatives -l

설치된 자바의 리스트를 보여준다.


java-1.6.0-openjdk-amd64 1061 /usr/lib/jvm/java-1.6.0-openjdk-amd64

java-1.7.0-openjdk-amd64 1051 /usr/lib/jvm/java-1.7.0-openjdk-amd64

java-6-oracle 1063 /usr/lib/jvm/java-6-oracle

java-7-oracle 1062 /usr/lib/jvm/java-7-oracle

java-gcj-4.6 /usr/lib/jvm/java-gcj-4.6


참 많이도 설치 되어 있다. 이중에 내가 필요한 것은 oracle의 1.7이므로 


$ sudo update-java-alternatives -s java-7-oracle

알맞게 바꿔 준다.


$ java -version


java version "1.7.0_60"

Java(TM) SE Runtime Environment (build 1.7.0_60-b19)

Java HotSpot(TM) 64-Bit Server VM (build 24.60-b09, mixed mode)


버전이 바뀐 것을 알 수 있다.


다만 android를 작업할 때 다시 바꾸어 주어야 하는 게 걸린다.

또 다른 사람이 사용하고 있다면 그것 또한 문제 인데, 나중 일은 나중에 해결하도록 하자.

'linux > 기타등등' 카테고리의 다른 글

gcc 특정파일 옵션 설정.  (0) 2014.08.07
리눅스 무료 HTML5 편집기 Aptana  (0) 2014.08.02
이미지 편집 프로그램 김프  (0) 2014.08.02
Sun/Oracle JDK 다운로드 및 설치  (0) 2014.07.09
linux 파일 redirection  (0) 2014.05.19

우분투 14.04 삼바 설치

우선 우분투에 삼바를 설치하도록 한다.


1. 삼바를 위한  네트워크 설정.




우분투에 호스트와 통신하기 위한 네트워크를 추가한다.

설정 -> 네트워크 -> 어탭터2를 선택하고 다음에 연결됨에 호스트 전용 어댑터를 선택하고 확인을 누른다.


2. 우분투 ip 확인


$ ifconfig 


eth1      Link encap:Ethernet  HWaddr 08:00:27:df:39:4c  

          inet addr:192.168.56.101  Bcast:192.168.56.255  Mask:255.255.255.0

          inet6 addr: fe80::a00:27ff:fedf:394c/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:65 errors:0 dropped:0 overruns:0 frame:0

          TX packets:92 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000 

          RX bytes:10396 (10.3 KB)  TX bytes:13608 (13.6 KB)


어댑터 2를 설정하고 생긴 두 번째 eth1가 삼바를 위한 ip이다.


3. 윈도우에서 삼바 접속


우선 주소 창에 우분투 IP와 사용자 명을 \을 이용해 적는다.


사용자 이름과 패스워드를 묻는 창이 나오는데 잘 입력하면 다음과 같이 화면을 볼 수 있다.



우선 주소창의 IP를 눌러보자.



내 폴더가 나오는데 우 클릭을 해서 네트워크 드라이브 연결을 선택한다.



적당한 드라이브 문자를 선택하고 마침을 누른다.



이제 우분투의 폴더를 내 파일 시스템처럼 사용할 수 있다.















1. 삼바 패키지 설치


아래 명령어로 삼바를 설치하도록 하자.

$ sudo apt-get install samba samba-common



2. user 추가 


$ sudo smbpass -a "유저이름"


유저의 패스워드를 설정하도록 하자

New SMB password:

Retype new SMB password:

Added user "유저이름".




3. 삼바 설정 파일 수정


$ sudo vim /etc/samba/smb.conf

위 파일에서 [home]과 관련된 주석을 해제한다.


[homes]

   comment = Home Directories

   browseable = no

위 내용 앞에 ;를 지워주면 된다.
그러면 2에서 추가한 user의 홈 디렉토리가 자동으로 공유된다.



4. 삼바 재시작


$ sudo /etc/init.d/samba restart



이제 윈도우에서 접속해서 사용하면 된다.


\\"ip 주소"\"유저이름"

'linux > ubuntu' 카테고리의 다른 글

우분투 ssh 서버 설치  (0) 2014.07.10
우분투 저장소 변경  (0) 2014.07.08


1. ssh 서버 설치


우분투에 ssh서버를 설치 해야 한다.

$ sudo apt-get install openssh-server



2. 서버 ip 확인


$ ifconfig


eth0      Link encap:Ethernet  HWaddr xxxxxxxxx 

          inet addr:10.0.2.15  Bcast:10.0.2.255  Mask:255.255.255.0

          inet6 addr: fe80::a00:27ff:fed7:eea2/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:21 errors:0 dropped:0 overruns:0 frame:0

          TX packets:70 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000 

          RX bytes:3455 (3.4 KB)  TX bytes:9991 (9.9 KB)

빨간 게 IP이다.


'linux > ubuntu' 카테고리의 다른 글

우분투 14.04 삼바 설치  (0) 2014.07.10
우분투 저장소 변경  (0) 2014.07.08

+ Recent posts