OpenCV 라이브러리를 사용해본 사람이라면 한번쯤 ImageWatch 플러그인을 사용해봤을 것이다.
디버거에서 확인하기 힘든 Mat 데이터내 index value등 간편한 인터페이스를 통해 직관적으로 확인이 가능한 유용한 툴이다. 하지만, Visual Studio에서만 사용이 가능한 플러그인이라, 리눅스 환경에서 개발을 하는 나에게는 아쉬움이 많았다.

그러다가 github에서 imagewatch와 비슷하게 간편한 인터페이스로 index값을 확인할 수 있는 프로그램을 발견하게 되었고, 지금까지 아주 유용하게 사용하고 있다.

설치조건

gdb imagewatch는 아래의 프로그램들의 설치를 필요로 한다.

  • OpenGL 2.1++
  • C+11 컴파일러
  • gdb 7.10 버전 이상
  • Qt 5.6 버전 이상 (HighDPI 필요)
  • Python 3+

$ gdb --version 으로 현재 gdb의 버전이 7.10 이상인지 확인한다.

설치 및 빌드

위의 설치조건에 모두 부합하다면, git을 이용하여 프로그램을 다운로드 한다. (git url)

$ git clone https://github.com/csantosbh/gdb-imagewatch  
$ cd gdb-imagewatch
$ git submodule init
$ git submodule update

다운로드 및 submodule 설정을 해주고, 아래의 명령어들을 이용해 build 한다

$ mkdir build && cd build
$ qmake .. BUILD_MODE=release PREFIX=/path/to/installation/folder
$ make -j4
$ make install

build mode의 prefix 부분은 설치의 경로를 지정해주면 된다. 기본적으로 /usr/local이 지정되어있다.

빌드가 성공적으로 되었다면 설치경로에서 python3 gdb-imagewatch.py --test 명령어를 통해 정상적으로 설치가 되었는지 확인한다.

사용법

gdb에서 imageWatch를 자동으로 실행시켜주기 위해 ~/.gdbinit 파일을 열어서 마지막 라인에 아래의 줄을 추가한다

source /path/to/gdb-imagewatch/gdb-imagewatch.py

아래 사진처럼 gdb가 breakpoint에서 걸리면 자동으로 창이 생성되면 보고자 하는 symbol명을 입력하면 된다.

code example

50x50행렬, 8 bit 3 channel을 모두 1로 초기화한 행렬을 imageWatch를 통해 확인한다.

image watch