Abstract
In the embedded Linux environments, developers can concurrently debug multiple processes that have parent-child relationships using multiple gdbs and gdbservers. But, it needs additional coding efforts and messy works of activating another gdbs and gdbservers for each created process, and so, it may be inefficient in the viewpoint of developers. In this paper, we propose a mgdb library and mgdbserver that supports concurrent debugging of multiple processes in the embedded Linux systems by using the library wrapping mechanism without modifying the kernel. Also, through the experimentation of concurrent debugging for multiple processes that communicate by an unnamed pipe, we show that our proposed debugging mechanism is more efficient than the preexisting mechanisms.
임베디드 Linux 환경에서 gdb와 gdbserver를 사용하여 현재 디버깅 중인 프로세스로부터 fork 시스템 콜에 의해 생성된 새로운 프로세스를 원격으로 동시에 디버깅할 수는 있으나 이를 위해서 개발자는 부가적인 코딩뿐만 아니라 새로운 프로세스가 생성될 때마다 원격 디버깅을 위해 별도의 gdb 및 gdbserver를 구동 시켜야 하는 등 불필요한 작업을 해야 하므로 효율적인 디버깅 작업을 진행하기 어렵다. 본 논문에서는 Linux 커널의 변경 없이 라이브러리 래핑 방법을 이용하여 원격 시스템에서 동작하는 다중 프로세스들을 동시에 디버깅할 수 있도록 지원하기 위한 mgdb 라이브러리와 mgdbserver를 제안한다. 또한, 파이프를 통하여 데이터를 주고받는 부모-자식 관계의 프로세스들을 원격으로 동시에 디버깅하는 실험을 통하여 본 논문에서 제안한 방법이 기존의 방법보다 더 효율적임을 보인다.