본문 바로가기

etc

chome 개발자 도구 사용하기

반응형

1. 단축키

크롬 개발자 도구에서 유용한 간단한 단축키 몇 가지~


  - 개발자 도구 열기(엘리먼트 패널) : Ctrl + Shift + C (맥일 경우 Command)

  - 개발자 도구 내 탭 전환 : Ctrl + [ or ]

  - 개발자 도구에서 콘솔 열고 닫기 : esc


도구를 여는 단축키가 3가지 있는데,

맥의 경우엔 기본 앱이 몇 가지를 물고 있어 개인적으론 엘리먼트 패널을 여는 위 단축키가 제일 좋더군요.



2. 콘솔 객체 메서드


스크립트 내에서 console.log() 처럼 사용 가능한,

console 객체의 메서드 중 유용한 것 몇 가지입니다.


콘솔 객체 메서드 관련 테스트는 jsFiddle에서 돌려보시면 더 쉽게 확인하실 수 있을 것 같아요.

(http://jsfiddle.net/ohgyun/j9aec/7/)



2.1. printf 스타일 로깅


로깅 메서드의 첫 번째 파라미터가 String 일 경우, printf 스타일로 로그를 남길 수 있습니다.


  %s           String

  %d, %i      Integer

  %f            Float

  %o           Object HyperLink, Object를 로그로 남기고 싶을 경우


예)

  console.log("%s, %d원", "멜론", 8000); //--> 멜론, 8000원



2.2. 타입별 로깅


타입별로 로깅하면 타입에 따라 로그 옆에 아이콘이 표시되고,

콘솔 패널 하단에서 타입별로 구분해 확인할 수 있습니다.


  console.info(object[, object, ...])

  console.warn(object[, object, ...])

  console.error(object[, object, ...])



2.3. 타이머


  console.time(name)

  console.timeEnd(name)


name에 해당하는 타이머를 생성하고 종료 시점까지의 시간을 출력합니다.

수행 시간을 테스트할 때 유용하게 사용할 수 있을 것 같아요.



2.4. 그룹별 로깅


  console.group(object[, object, ...])

  console.groupEnd()


콘솔 메세지를 그룹핑하여 출력합니다.


  console.groupCollapsed(object[, object, ...])

  console.groupEnd()


group과 동일하지만, 그룹을 닫은 채로 출력합니다.



2.5. 프로파일링


  console.profile(title)

  console.profileEnd(title)


콘솔 객체를 통해 프로파일링을 수행할 수 있습니다.

종료되면 프로파일 패널에 리포트가 작성됩니다.

메서드 단위의 성능을 테스트할 때 유용하게 쓸 수 있을 것 같네요. 



2.6. 그 외 유용한 것들


assertion 도 가능하고,

  console.assert(expression[, object, ...])


호출 스택을 출력하는 것도 가능합니다.

  console.trace()


또한, 몇 번 호출되었는지도 체크 가능합니다.

  console.count(title)




3. 콘솔 라인 메서드


아래는 콘솔 라인 내에서 사용할 수 있는 메서드들에 대한 내용이며,

스크립트 내에서는 사용할 수 없습니다.



3.1. 노드 가져오기


  $(id) : id에 해당하는 엘리먼트를 가져옵니다.


  $$(selector) : selector에 해당하는 엘리먼트를 배열로 가져옵니다.


  $x(xpath) : xpath 구문으로 가져옵니다.


셀렉터 메서드는 진도의 것과 동일한 형태이고, 내부적으로 getElementById와 querySelectorAll을 사용하고 있네요. 

위 메서드를 사용하고 있지 않는 페이지에서 $, $$, $x를 콘솔에서 출력해보면, 구현 코드를 조회할 수 있습니다.



3.2. 선택한 노드 가져오기


전 이 변수가 제일 마음에 들던데요^^

엘리먼트 패널에서 선택한 가장 최근의 노드를 $0 변수를 통해 가져올 수 있습니다.


  $0 : 가장 최근에 엘리먼트 패널에서 선택된 노드



그 이전 노드를 선택하고자 할 때엔 $n 변수를 이용하세요.


  $1, $2, .. : n번 이전에 선택할 엘리먼트



3.3. 커맨드 라인에서 노드 조회하기


  inspect(id|object)


명령어로 커맨드 라인에서 노드를 가져와 엘리먼트 패널에서 조회할 수 있습니다.

마찬가지로 선택된 노드가 $0에 캐시됩니다.


예)

  inspect(this_is_id) // 주의: 파라미터로 id를 입력할 경우 따옴표(")는 생략

  inspect($1)



3.4. key와 value 출력


오브젝트의 key와 value를 출력합니다.


예를 들어, 콘솔 객체의 프로토타입 메서드를 조회해보고자 한다면,

콘솔 라인에서 아래 명령을 출력해보면 됩니다.


  keys(console.__proto__);



3.5. 클립보드 복사


copy() 명령어로 object 내용을 클립보드로 복사할 수 있습니다.


예를 들어,


  copy($0)


명령어는 가장 최근에 선택된 엘리먼트의 html 구문을 클립보드로 복사합니다.



3.6. monitorEvents


  monitorEvents(object[. types])

  unmonitorEvents(object[, types])


노드에서 발생하는 이벤트를 모니터링 합니다.

types 값으로 "mouse", "key" 등을 넣을 수 있습니다.


크롬 콘솔이 파이어폭스의 것을 대부분 지원하고,

firebug command line API에 따르면 types에는 아래와 같은 종류가 있는데,

모두 제공하는 것 같진 않습니다. 

("composition", "contextmenu", "drag", "focus", "form", "key", "load", "mouse", "mutation", "paint", "scroll", "text", "ui", "xul")


대신, "click", "mousedown" 등 이벤트명을 직접 입력하는 것에는 작동하네요.




그리고,

늘, 테스트용 로깅 코드를 작성했다가 배포할 땐 지우곤 했었는데,

콘솔 코드를 잘 구분해서 코드에 포함시켜 놓으면 추후에 디버깅할 때 꽤 도움이 될 것 같단 생각이 들었습니다.


일전에 JSTools 배포 목록에서 console.xx 는 모두 지워준다고 했던 걸로 기억하는데,

로깅 코드를 잘 구분해두고, 배포툴에서 걸러주면 디버깅하기 편할 것 같네요.

이런 저런 생각을..^^;;


다른 서비스에서 프로덕트 시점의 코드에 로깅 코드를 포함시킨 케이스가 있나요?

이런 케이스나 좋은 의견이 있으면 가이드 부탁드려요~~



그럼 모두 칼퇴하시고, 즐거운 저녁 되세요~!!



#참고.

Chrome Developer Tools : http://code.google.com/intl/ko-KR/chrome/devtools/docs/overview.html


Chrome Developer Tools: Console

http://code.google.com/intl/ko-KR/chrome/devtools/docs/console.html

http://code.google.com/intl/ko-KR/chrome/devtools/docs/shortcuts.html


Firebug Console API

http://getfirebug.com/wiki/index.php/Console_API


Firebug Command Line API

http://getfirebug.com/wiki/index.php/Command_Line_API


YouTube: Become a Javascript Console Power-User

http://www.youtube.com/watch?v=4mf_yNLlgic&feature=feedu



반응형

'etc' 카테고리의 다른 글

css  (0) 2012.01.11
<고독의 위로] 앤서니 스토  (0) 2011.11.21
JS tpl 템플릿 추가하기  (0) 2011.10.24
테스트 패턴  (0) 2011.10.19
테스트의 질  (0) 2011.10.19