GNU 디버거: 두 판 사이의 차이

내용 삭제됨 내용 추가됨
Pastime (토론 | 기여)
편집 요약 없음
Pastime (토론 | 기여)
10번째 줄:
 
== 기술적인 세부 사항 ==
=== 기능 ===
'''TODO'''
GDB는 [[컴퓨터 프로그램]]의 실행을 추적하고 수정할 수 있는 많은 기능들을 제공한다.
사용자는 프로그램의 내부 [[변수]]들의 값을 모니터링하거나 변경할 수 있으며,
프로그램의 일반적인 실행 과정과 독립적으로 [[함수 (프로그래밍)|함수]]를 호출할 수도 있다.
 
GDB는 ([[2003년]] 현재) [[Alpha]], [[ARM]], [[H8/300]], [[System/370]], [[System 390]], [[X86]], [[IA-64]] "아이태니엄",
[[모토로라 68000]], [[MIPS]], [[PA-RISC]], [[PowerPC]], [[SuperH]], [[SPARC]], [[VAX]]와 같은 다양한 머신들을 지원한다.
 
표준 릴리즈에 포함된 덜 알려진 타겟 프로세서로는 [[A29K]], [[Advanced RISC Computing|ARC]], [[AVR]], [[CRIS]], [[D10V]], [[D30V]], [[FR-30]], [[FR-V]], [[인텔 i960]], [[M32R]], [[Motorola 68HC11|68HC11]], [[Motorola 88000]], [[MCORE]], [[MN10200]], [[MN10300]], [[320xx microprocessor|NS32K]], [[Stormy16]], [[V850]], [[VAX]], [[Zilog Z8000|Z8000]] 과 같은 것들이 있으며 이들 중에는 새 릴리즈에
포함되지 않은 것들도 있다.
 
GDB는 내부에 M32R이나 V850과 같은 거의 알려지지 않은 타겟 프로세서들에 대한 [[시뮬레이터]]도 포함하고 있다.
 
=== 원격 디버깅 ===
GDB는 임베디드 시스템을 디버깅할 때 사용되는 '원격' 모드를 지원한다.
원격 디버깅은 GDB가 한 머신 상에서 동작하고, 디버그할 프로그램은 다른 머신 상에서 동작하는 것을 말한다.
GDB는 GDB 프로토콜을 알고 있는 원격지의 'stub'과 직렬 포트 혹은 TCP/IP를 통해 통신할 수 있다.
 
이 원격 디버깅 모드는 [[리눅스 커널]]에 사용되는 소스-레벨 디버거인 [[KGDB]]에서도 사용된다.
KGDB를 사용하면 커널 개발자는 일반 응용 프로그램과 마찬가지로 커널을 디버깅할 수 있다.
KGDB는 커널 코드내에 중단점을 삽입하는 것이 가능하며, 코드를 한 단계씩 실행(step)시키거나, 변수의 값을 관찰하는 것이 가능하다.
하드웨어 디버깅 레지스터를 포함하고 있는 프로세서에서는 감시점(watchpoint)을 설정하여 특정 메모리 주소가 접근되거나 실행될 때
중단점을 설정할 수 있다. KGDB는 디버깅할 머신에 [[직렬 케이블]]이나 [[이더넷]]을 통해 연결될 또 다른 머신을 필요로 한다.
[[FreeBSD]]에서는 [[Firewire]] [[DMA]]를 이용한 디버깅도 가능하다.
 
=== 제한 사항 ===
GDB는 자체적인 [[GUI]]를 포함하고 있지 않으며 기본적으로 [[명령행]] 인터페이스를 사용한다.
[[DDD]], [[GDBk]]/[[Insight]]와 같은 몇 가지 프론트엔드들이 있으며, [[Emacs]]에서도 "GUD"모드를 지원한다.
이들은 [[통합 개발 환경]]에서 제공하는 것과 바슷한 디버깅 기능들을 제공한다.
 
[[메모리 누수]] 탐지기와 같이 GDB와 연동하여 사용할 수 있는 툴들도 존재한다.
 
== 커맨드의 사용 예 ==