본문 바로가기

그 외

Notepad++ 의 멋진기능 - 구문강조 (Syntax highlighting)

이번 포스팅의 주제는 Notepad++ 의 구문강조 기능입니다.

개발자라면 아마도 손에 익은 텍스트에디터 하나쯤 있게 마련입니다.


간단한 메모도 하고, html 파일도 수정하고, 로그 분석도 하고... 주로 쓰는 개발툴에서 하기에는 마땅치 않은

작업을 할 필요가 있기 때문이지요.


그런데 특정 문자열만 색상을 변경해서 보고 싶은 경우엔 어떻게 해야 할까요? 

그럴 때는 노트패드++의 구문강조 (Syntax highlighting)을 추천합니다.


노트패드++

http://notepad-plus-plus.org/download/



오늘은 이 Notepad++ 의 수많은 기능 중 구문강조 기능을 활용해보겠습니다.

특정 로그가 있을 때, 특정 문자만 색상을 변경해서 보는 기능이 오늘의 목표입니다.


예제로그

안드로이드에서 흔히 볼 수 있는 로그입니다.

D/dalvikvm( 1287): GC freed 3 objects / 72 bytes in 92ms 

D/dalvikvm( 2216): GC freed 6646 objects / 313032 bytes in 104ms 

D/NetworkLocationProvider(   75): onCellLocationChanged [***] 

D/LocationManager( 2216): removeUpdates: listener = com.levelup.beautifulwidgets .UpdateWeather$2@447843d8 

D/dalvikvm( 1253): GC freed 281 objects / 12688 bytes in 93ms 

D/NetworkLocationProvider(   75): onCellLocationChanged [***] 

D/LocationManager( 2216): removeUpdates: listener = com.levelup.beautifulwidgets .UpdateWeather$2@447843d8 

D/dalvikvm(   75): GC freed 41839 objects / 1963448 bytes in 88ms

D/dalvikvm( 1287): GC freed 3 objects / 72 bytes in 94ms 



언어 - 언어 정의를 선택합니다. 예제로그를 Notepad++에 붙여넣어진 상태입니다.




사용자 지정 프로그래밍 언어 창이 뜹니다. 그러면 새로만들기를 선택한 뒤, 임의의 이름을 씁니다.

저는 stanleyKou라고 입력했습니다.



이름을 지정했으면, 키워드 목록을 선택합니다. 그 다음 1번 그룹에 GC freed라는 문자열을 넣습니다.

이 키워드 목록은 색상을 변경하고 싶은 키워드를 말합니다.


키워드의 색생과 글꼴, 크기등을 설정합니다.


글꼴을 적용한 모습입니다. 아까 입력한 키워드인 GC freed가 빨간 색으로 표시되고 있습니다.


다른 키워드, objects 를 2번 그룹에 파란 색으로 지정해 봅니다.


눈치 채신분도 계시겠지만, 이 기능은 마치 IDE에서 C언어나 JAVA를 로딩 했을 때 특정 키워드의 색상을 변경해주는 기능을 응용한 것입니다.

(실제로 Notepad++은 확장자에 따라 자동으로 해당 언어에 맞게 키워드의 컬러를 변경해줍니다.)


이 기능을 활용한 결과로 분석을 해보면, 

1. GC (가비지 컬렉터)가 동작할 때 마다 몇 개씩의 오브젝트가 해제되었는지 확인할 수 있습니다.

2. 그리고 일반적으로 GC가 빈번하게 일어난다는 것은 메모리가 부족하여 단말이 헐덕헐덕대고 있다는 것을 말합니다. 즉 GC가 조밀하게 찍혀있는 부분 조금 앞 부분에서 메모리 부족을 유발시키는 동작이 일어났을 가능성이 있습니다.

3. 일정 범위로 문제점이 좁혀지면, 예상되는 키워드를 다시 설정합니다. 글자크기, 색상등을 설정하고 다시 확인합니다. 왜냐하면 보통 로그는 몇천라인이고, 눈으로 일일이 확인해야 하는 경우에 눈알이 빠질듯한 고통이 뒤따르기 떄문입니다. 그러나 이 구문강조를 이용하면 눈의 고통을 1/5로 낮출 수 있습니다.


아래 이미지와 제일 처음 로그를 비교해서 보면, 어떤 방식이 더 눈에 편한지는 자명합니다.