GDB는 내부에 M32R이나 V850과 같은 거의 알려지지 않은 타겟 프로세서들에 대한 시뮬레이터도 포함하고 있다.
원격 디버깅
GDB는 임베디드 시스템을 디버깅할 때 사용되는 '원격' 모드를 지원한다. 원격 디버깅은 GDB가 한 머신 상에서 동작하고, 디버그할 프로그램은 다른 머신 상에서 동작하는 것을 말한다. GDB는 GDB 프로토콜을 알고 있는 원격지의 'stub'과 직렬 포트 혹은 TCP/IP를 통해 통신할 수 있다.
이 원격 디버깅 모드는 리눅스 커널에 사용되는 소스 수준의 디버거인 KGDB에서도 사용된다. KGDB를 사용하면 커널 개발자는 일반 응용 프로그램과 마찬가지로 커널을 디버깅할 수 있다. KGDB는 커널 코드내에 중단점을 삽입하는 것이 가능하며, 코드를 한 단계씩 실행(step)시키거나, 변수의 값을 관찰하는 것이 가능하다. 하드웨어 디버깅 레지스터를 포함하고 있는 프로세서에서는 감시점(watchpoint)을 설정하여 특정 메모리 주소가 접근되거나 실행될 때 중단점을 설정할 수 있다. KGDB는 디버깅할 머신에 직렬 케이블이나 이더넷을 통해 연결될 또 다른 머신을 필요로 한다. FreeBSD에서는 파이어와이어DMA를 이용한 디버깅도 가능하다.
제한 사항
GDB는 자체적인 GUI를 포함하고 있지 않으며 기본적으로 명령행 인터페이스를 사용한다. DDD, GDBk/Insight와 같은 몇 가지 프론트엔드들이 있으며, Emacs에서도 "GUD"모드를 지원한다. 이들은 통합 개발 환경에서 제공하는 것과 비슷한 디버깅 기능들을 제공한다.
GNU gdb Red Hat Linux (6.3.0.0-1.21rh)
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "i386-redhat-linux-gnu"...Using host libthread_db library "/lib/libthread_db.so.1".
(gdb) run
Starting program: /home/sam/programming/crash
Reading symbols from shared object read from target memory...done.
Loaded system supplied DSO at 0xc11000
This program will demonstrate gdb
Program received signal SIGSEGV, Segmentation fault.
0x08048428 in function_2 (x=24) at crash.c:22
22 return *y;
(gdb) edit
(gdb) shell gcc crash.c -o crash -gstabs+
(gdb) run
The program being debugged has been started already.
Start it from the beginning? (y or n) y
warning: cannot close "shared object read from target memory": File in wrong format
`/home/sam/programming/crash' has changed; re-reading symbols.
Starting program: /home/sam/programming/crash
Reading symbols from shared object read from target memory...done.
Loaded system supplied DSO at 0xa3e000
This program will demonstrate gdb
24
Program exited normally.
(gdb) quit
먼저 프로그램을 실행시키고 세그먼트 폴트의 원인을 찾은 후에 올바른 동작을 하도록 수정(edit)하였다. 수정된 프로그램은 GCC를 통해 다시 컴파일된 후 실행되었다.