http://muellerware.org/ 가 만든 이 프로젝트는 웹킷의 원격 디버깅 프로토콜 http://www.webkit.org/blog/1620/webkit-remote-debugging/ 을 이용해 개발되었고 하이브리드 앱 개발 도구인 Apache Callback(Phonegap) 의 서브 프로젝트이다.
Weinre를 통한 디버깅은 세가지 파트로 나뉜다.
서버(Server)
java기반(Jetty)의 http 서버이다.
대상(Target)
디버깅할 모바일 디바이스 브라우저. 웹킷 계열만 지원한다.
클라이언트(Client)
Safari, Chrome 등에 내장된 Web Inspector와 비슷한 외관의 클라이언트 페이지. -webkit- prefix 를 통한 CSS3만 지원하므로 웹킷 브라우저가 필수.
서버는 프로젝트 홈페이지에서 jar 파일을 다운로드 받아 실행한다.
$ java -jar weinre.jar
--help (or -? or -h)
이 도움말 화면을 보여줌.
--httpPort [포트번호]
HTTP 서버가 동작할 포트 번호.
기본값 : 8080
--boundHost [hostname | ip address | -all-]
서버에 바인딩할 아이피 주소
기본값 : localhost
기본값인 localhost 로는 다른 기기에서 접속할 수 없다. 따라서 다른 기기에서 접속하기 위해서는 다른 호스트네임이나 IP 주소를 바인딩해야한다. -all- 을 사용하면 이 기기로 연결가능한 모든 인터페이스를 사용할 수 있다.
맥이나 라눅스에서는 ifconfig 을 사용하고, 윈도우에서는 ipconfig 를 사용해 ip 주소를 얻어올 수 있다.
--verbose [true | false]
stdout 을 통해 소소한 것까지 출력함.
기본값: false
--reuseAddr [true | false]
Jetty 의 reuseAddr 옵션을 설정함.
기본값: false
서버를 주기적으로 재시작할 때 필요할 수 있다.
--readTimeout [seconds]
기본값: 5
--deathTimeout [seconds]
기본값: 3 * readTimeout
대상은 디버깅용 JS파일을 임포트 한다. 이 디버깅용 파일은 HTML 소스에 고정적으로 로드하거나, 북마클릿을 통해 동적으로 로드할 수 있다.
<script src="http://a.b.c:8080/target/target-script-min.js#anonymous"></script>
이제 사용할 준비가 완료 되었다. 브라우저를 통해 http://a.b.c:8080/client 에 접속하면 아래와 같은 Web Inspector를 볼 수 있다.
스크립트 URL : http://a.b.c:8080/target/target-script-min.js#anonymous
클라이언트 접속 URL: http://a.b.c:8080/client/#anonymous
에서 마지막의 #anonymous 부분을 변경해 서버 하나에 프로젝트마다 또는 각 사용자마다 아이디를 줄 수 있다.
특히 긴급한 상황에서 북마클릿을 활용해 스크립트를 로딩하면 디버그가 가능하다.