소프트웨어 엔지니어를 위한 최고의 리눅스 디버거 8가지

디버거는 프로그램에서 버그를 찾는 데 필수적입니다. 디버거는 코드 컴파일 전에 문제를 찾으려고 시도하여 보통 컴파일러보다 더 많은 정보를 제공합니다. 리눅스는 주로 오픈 소스 생태계로, 여러 언어와 처리 아키텍처에서 작동하는 이러한 종류의 애플리케이션이 풍부합니다. 이 가이드에서는 리눅스 디버거의 세계로 바로 들어가보겠습니다.
목차
- GNU 디버거(GDB)
- 데이터 디스플레이 디버거(DDD)
- LLDB
- 델브(Delve)
- Xdebug
- KDbg
- Valgrind
- strace
1. GNU 디버거(GDB)
GNU 디버거, 즉 GDB는 현대 프로그래머에게 제공되는 가장 강력한 리눅스 디버거 중 하나입니다. GDB는 방대한 기능 세트를 가지고 있는 강력한 도구입니다. GDB는 C, C++, Go, Rust와 같은 많은 인기 프로그래밍 언어를 지원합니다. x86, x86-64, ARM, PowerPC, SPARC 및 MIPS와 같은 다양한 CPU 아키텍처에서도 작동합니다.

다음 명령을 사용하여 GDB를 설치하십시오:
우분투/데비안 기반 배포판에서:
sudo apt install gdb페도라/RHEL 배포판에서:
sudo dnf install gdb아치 기반 배포판에서:
sudo pacman -S gdbGCC로 디버그 심볼을 사용하여 컴파일하는 한, 프로그램이 실행되는 동안 s를 입력하여 프로그램의 명령을 단계적으로 실행할 수 있습니다. r을 입력하면 디버거를 통해 프로그램이 실행됩니다. 프로그램이 로드된 상태에서 GDB를 시작하려면 터미널에 gdb와 프로그램 경로를 입력하면 됩니다.
입장하면 help를 입력하면 이 강력한 디버거로 할 수 있는 모든 기능을 설명하는 잘 정리된 목록을 볼 수 있습니다!
2. 데이터 디스플레이 디버거(DDD)
명령어 다루는 것이 귀찮지만 GDB의 기능을 여전히 사랑하는 경우, DDD는 모든 기능을 포인트 앤 클릭 인터페이스에서 제공하는 간단한 그래픽 프론트 엔드를 제공합니다. 이것은 전형적인 리눅스 디버거 GUI입니다.

UI는 약간 단순해 보일 수 있지만, 다른 어떤 디버거와 마찬가지로 강력함을 지니고 있습니다. 여기서의 차이점은 GNU의 시그니처 디버거에 그래픽 인터페이스가 추가되었다는 것입니다!
설치하려면:
우분투/데비안 기반 배포판에서:
sudo apt install ddd페도라/RHEL 배포판에서:
sudo dnf install ddd아치 기반 배포판에서:
yay -S ddd모든 아치 기반 시스템에서는 AUR 헬퍼를 사용해야 하며, DDD는 공식 리포지토리에 존재하지 않습니다. 또는 AUR 헬퍼 없이 아치 기반 시스템에 DDD를 설치할 수 있습니다:
sudo pacman -S --needed base-devel
git clone https://aur.archlinux.org/ddd.git
cd ddd
makepkg -si3. LLDB
LLDB는 LLVM 프로젝트의 일부입니다. LLVM 스위트는 효율적인 작업 흐름 덕분에 인기를 얻고 있습니다. 또한 macOS의 Xcode와 Android Studio의 기본 디버거로 자리 잡았습니다. LLDB의 주요 특징 중 일부는 다양한 컴파일러 통합 및 원격 디버깅 지원입니다. C 언어(C, C++, Objective-C)를 지원합니다.

기본 GDB 명령어에 익숙한 사람에게 LLDB는 친숙할 것입니다. run 또는 r를 입력하면 프로그램이 실행되고, step 또는 s를 입력하면 서브루틴을 단계적으로 실행합니다.
설치하려면:
우분투/데비안 기반 배포판에서:
sudo apt install lldb페도라/RHEL 배포판에서:
sudo dnf install lldb아치 기반 배포판에서:
sudo pacman -S lldb4. 델브(Delve)
델브는 구글의 Go 프로그래밍 언어를 위한 간단하면서도 기능이 풍부한 리눅스 디버거입니다. 실행 시간에 프로그램과 상호 작용하고 고루틴 및 스택과 같은 것을 조작할 수 있습니다. 디버거 자체가 Go로 작성되어, 테스트할 프로그램과 같은 환경에서 실행됩니다.
델브는 GDB와 LLDB와 같은 원리로 작동하지만, 다른 두 디버거와 크게 다른 고유한 명령 세트를 가지고 있습니다. 입장 후 help를 입력하면 제공되는 모든 디버그 옵션의 전체 목록을 확인할 수 있습니다.
보다 일반적인 여러 언어를 위한 디버거와 달리, 델브는 실행 중인 애플리케이션을 더 세부적으로 탐색할 수 있는 Go 전용 명령어를 더 많이 제공합니다.

설치하려면:
우분투/데비안 기반 배포판에서:
sudo apt install delve페도라/RHEL 배포판에서:
sudo dnf install delve아치 기반 배포판에서:
sudo pacman -S delve5. Xdebug
대부분의 사람들은 특정 코드 문제를 파악하기 위해 변수 덤프(이를 PHP 커뮤니티에서는 “dump & die”라고 부름)를 배웁니다. 그러나 모든 루틴을 한 번에 살펴볼 수 있는 더 강력한 기능이 필요할 때가 있습니다. Xdebug는 예비 및 숙련된 PHP 프로그래머에게 이를 다채롭게 제공합니다.
Xdebug는 PHP 코드를 한 줄씩 단계적으로 실행하며 웹 페이지가 처리될 때 무슨 일이 일어나고 있는지를 정확하게 보여줍니다. Xdebug는 VSCode를 포함한 여러 IDE에서도 작동합니다. 다른 기능으로는 강력한 프로파일러, 스택 추적기 및 전체 실행 세그먼트를 덤프하는 기능이 포함되어 있습니다.
Xdebug를 설치하려면:
우분투/데비안 기반 배포판에서:
sudo apt install php-xdebug페도라/RHEL 배포판에서:
sudo dnf install php-xdebug아치 기반 배포판에서:
sudo pacman -S xdebug6. KDbg
KDbg는 KDE 데스크탑 환경을 위한 GUI 디버거입니다. DDD와 마찬가지로 GDB 프론트 엔드로 실행되므로 GDB의 모든 기능을 직관적인 사용자 인터페이스와 함께 제공합니다. 더 노련한 프로그래머는 코드 단계를 수행하면서 모든 변수를 명확하게 볼 수 있는 기회를 높이 평가할 것이며, 각 CPU 레지스터가 무엇을 가지고 있는지를 보여주는 전담 패널을 완전히 제공합니다. 다른 디버거에서는 이 시각화를 쉽게 할 수 없습니다.
이런 이유로 KDbg는 전통적인 네이티브 애플리케이션 프로그래머에게 훌륭한 선택입니다. 이제 막 배우기 시작한 초보자부터 가장 숙련된 베테랑까지 모두에게 적합합니다.

KDbg를 설치하려면:
우분투/데비안 기반 배포판에서:
sudo apt install kdbg페도라/RHEL 배포판에서:
sudo dnf install kdbg아치 기반 배포판에서:
sudo pacman -S kdbg참고: 우분투 또는 데비안 기반 배포판을 사용 중이고 공식 리포지토리에서 kdbg 패키지를 찾지 못하면, 직접 빌드할 때 입력해야 하는 내용은 다음과 같습니다:
sudo apt install build-essential cmake extra-cmake-modules qtbase5-dev libkf5i18n-dev libkf5iconthemes-dev libkf5xmlgui-dev
git clone -b maint https://github.com/j6t/kdbg.git
cd kdbg
cmake .
make
sudo make install7. Valgrind
Valgrind는 강력한 메모리 디버거로, 소프트웨어 분석을 위한 다양한 추가 도구를 제공합니다. 리눅스와 맥에서 실행됩니다. 또한 프레임워크로 사용할 수 있으며 프로파일러와 같은 동적 분석 도구를 생성할 수 있습니다. 전반적으로 Valgrind는 프로그램이 실행되는 동안 메모리를 모니터링하는 다양한 도구와 풍부한 기능 세트 덕분에 전문가에게 훌륭한 선택입니다.

Valgrind를 설치하려면:
우분투/데비안 기반 배포판에서:
sudo apt install valgrind페도라/RHEL 배포판에서:
sudo dnf install valgrind아치 기반 배포판에서:
sudo pacman -S valgrind8. strace
strace는 Unix의 사용자 공간 유틸리티로, 사용자가 시스템 호출과 신호를 터미널에서 직접 추적할 수 있게 해줍니다.

프로그래머는 이를 사용하여 스택 트레이스를 덤프하고, 시스템 호출을 필터링하고, 반환 코드를 수정하고, 파일 설명자를 추출하는 등 여러 작업을 수행할 수 있습니다.
더 중요한 것은 strace가 실행 중인 프로그램에 첨부할 수 있게 해줍니다. 개별적으로 실행 중인 소프트웨어에 대해 더 깊이 파고들어 충돌의 원인을 더 잘 이해하는 데 도움이 됩니다.
strace를 설치하려면:
우분투/데비안 기반 배포판에서:
sudo apt install strace페도라/RHEL 배포판에서:
sudo dnf install strace아치 기반 배포판에서:
sudo pacman -S strace무기가 당신을 기다린다
이 도구들을 통해 이제는 이전에는 접근하기 어려웠던 방법으로 코드를 점검하고 분석할 수 있습니다. 배우는 데 약간의 시간이 걸리더라도 그만한 가치가 있습니다. 리눅스에서 프로그래밍에 진지하다면 디버거를 사용하는 법을 배우는 것이 장기적으로 훨씬 더 많은 시간을 절약하게 해줄 것입니다.
최고의 리눅스 디버거를 확보했으므로 이제 개발자를 위한 최고의 리눅스 배포판을 찾아볼 시간입니다.
이미지 출처: 저자 제공.