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

소프트웨어 엔지니어를 위한 최고의 Linux 디버거 8가지
문자 집합=잘못된 문자 집합 ID 48

디버거는 프로그램에서 버그를 찾는 데 필수적입니다. 그들은 코드를 컴파일하기 전에 코드에서 문제를 찾으려고 발품을 팔고 일반적으로 컴파일러 자체보다 더 많은 정보를 제공합니다. 주로 오픈 소스 생태계인 Linux에는 다양한 언어 및 처리 아키텍처에서 작동하는 이러한 유형의 애플리케이션이 많이 있습니다. 이 가이드에서는 Linux 디버거의 세계를 직접 살펴보겠습니다.

1. GNU 디버거(GDB)

GNU 디버거(GDB라고도 함)는 현대 프로그래머가 사용할 수 있는 가장 강력한 Linux 디버거 중 하나입니다. 광범위한 기능 세트를 갖춘 강력한 도구입니다. GDB는 C, C++, Go 및 Rust를 포함하여 많은 인기 프로그래밍 언어를 지원합니다. 또한 x86, x86-64, ARM, PowerPC, SPARC 및 MIPS와 같은 다양한 CPU 아키텍처에서도 작동합니다.

테스트 프로그램을 실행하는 GDB 데모

다음 명령을 사용하여 GDB를 설치하십시오.

Ubuntu/Debian 기반 배포판의 경우:

Fedora/RHEL 배포판에서:

Arch 기반 배포판에서는:

디버그 기호가 있는 GCC를 사용하여 컴파일하는 한 s을 입력하여 프로그램이 실행되는 동안 프로그램의 지침을 단계별로 진행할 수 있습니다. r를 입력하면 디버거를 통해 프로그램이 실행됩니다. 프로그램이 로드된 상태에서 GDB를 시작하려면 터미널에 gdb 뒤에 프로그램 경로를 입력하면 됩니다.

들어가서 help를 입력하면 이 강력한 디버거로 수행할 수 있는 모든 작업을 설명하는 잘 정리된 카탈로그가 제공됩니다!

2. 데이터 디스플레이 디버거(DDD)

명령을 다루는 것이 마음에 들지 않지만 GDB가 제공하는 기능을 여전히 좋아한다면 DDD는 간단한 그래픽을 제공합니다. 포인트 앤 클릭 인터페이스로 모든 기능을 제공하는 프런트엔드입니다. 이는 전형적인 Linux 디버거 GUI입니다.

DDD는 기본적인 프로그램을 실행하고 종료합니다.

UI는 약간 단순해 보일 수 있지만 다른 디버거만큼 강력합니다. 여기서 차이점은 그래픽 인터페이스를 갖춘 GNU의 시그니처 디버거를 얻을 수 있다는 것입니다!

설치하려면:

Ubuntu/Debian 기반 배포판의 경우:

Fedora/RHEL 배포판에서:

Arch 기반 배포판에서는:

아치 기반의 모든 것은 공식 저장소에 DDD가 존재하지 않기 때문에 AUR 도우미를 사용해야 합니다. 또는 AUR 도우미 없이 Arch 기반 시스템에 DDD를 설치할 수 있습니다.

3. LLDB

LLDB는 LLVM 프로젝트의 일부입니다. LLVM 제품군은 효율적인 작업 흐름 덕분에 인기를 얻고 있습니다. 또한 macOS의 Xcode 및 Android Studio의 기본 디버거가 되었습니다. LLDB의 주요 기능 중 일부에는 다양한 컴파일러 통합 및 원격 디버깅 지원이 포함됩니다. C 언어(C, C++ 및 Objective-C)를 지원합니다.

리눅스디버거 Lldb

기본 GDB 명령에 이미 익숙한 사람들에게는 LLDB가 친숙하게 느껴질 것입니다. run 또는 r를 입력하면 프로그램이 실행되고 step 또는 s를 입력하면 해당 서브루틴이 실행됩니다.

설치하려면:

Ubuntu/Debian 기반 배포판의 경우:

Fedora/RHEL 배포판에서:

Arch 기반 배포판에서는:

4. 탐구

Delve는 간단하면서도 기능이 풍부한 Google Go 프로그래밍 언어용 Linux 디버거입니다. 이를 사용하여 런타임에 프로그램과 상호 작용하고 고루틴 및 스택과 같은 것을 조작할 수 있습니다. 디버거 자체는 Go로 작성되어 테스트 중인 프로그램과 동일한 환경에서 런타임을 제공합니다.

기본적인 코드로 프로그램을 실행하는 Delve 디버거입니다.

Delve는 다른 두 가지와 크게 다른 고유한 명령 세트가 있다는 점만 제외하면 GDB 및 LLDB와 동일한 원리로 작동합니다. 로그인한 후 help만 입력하면 제공되는 모든 디버그 옵션의 전체 목록을 볼 수 있습니다.

여러 언어에 대한 보다 일반적인 디버거와 달리 Delve는 애플리케이션이 실행될 때 더 세부적인 수준에서 살펴볼 수 있는 Go 관련 명령을 더 많이 제공합니다.

Delve를 사용하여 특정 Go 루틴 및 스레드를 살펴봅니다.

설치하려면:

Ubuntu/Debian 기반 배포판의 경우:

Fedora/RHEL 배포판에서:

Arch 기반 배포판에서는:

5. 엑스디버그

대부분의 사람들은 코드의 특정 측면에 어떤 문제가 있는지 알아내기 위해 변수(PHP 커뮤니티에서는 ‘덤프 앤 다이’라고 함)를 덤프하는 방법을 배우지만, 좀 더 강력한 것이 필요할 때가 있습니다. 모든 루틴을 안내할 수 있습니다. Xdebug는 야심찬 베테랑 PHP 프로그래머를 위해 이 기능을 제공합니다.

일부 간단한 디버그 세션 중 Xdebug 출력

이는 PHP 코드를 한 줄씩 단계별로 실행하고 웹 페이지가 처리될 때 무슨 일이 일어나는지 정확하게 보여주는 Linux 디버거입니다. Xdebug는 VSCode를 포함한 여러 IDE에서도 작동합니다. 다른 기능으로는 강력한 프로파일러, 스택 추적기 및 전체 실행 세그먼트를 덤프하는 기능이 있습니다.

Xdebug를 설치하려면:

Ubuntu/Debian 기반 배포판의 경우:

Fedora/RHEL 배포판에서:

Arch 기반 배포판에서는:

6. KDbg

KDbgKDE 데스크톱 환경용 GUI 디버거입니다. DDD처럼 GDB 프런트 엔드로 실행되므로 직관적인 사용자 인터페이스와 함께 GDB의 모든 기능을 얻을 수 있습니다. 경험이 많은 프로그래머라면 코드를 단계별로 실행하는 동안 모든 변수를 명확하게 볼 수 있을 뿐만 아니라 각 CPU 레지스터가 보유하고 있는 내용을 보여주는 완전히 전용 패널을 높이 평가할 것입니다. 여기서 다루는 다른 디버거에서는 시각화하기가 쉽지 않습니다.

이 때문에 KDbg는 이제 막 배우기 시작한 올챙이부터 가장 숙련된 베테랑에 이르기까지 전통적인 기본 응용 프로그램 프로그래머에게 환상적인 선택입니다.

C로 작성된 실행 프로그램을 디버깅하는 KDbg

KDbg를 설치하려면:

Ubuntu/Debian 기반 배포판의 경우:

Fedora/RHEL 배포판에서:

Arch 기반 배포판에서는:

7. 선거 게이트

Valgrind는 소프트웨어 분석을 위한 다양한 추가 도구를 제공하는 견고한 메모리 디버거입니다. Linux와 Mac 모두에서 실행됩니다. 또한 이를 프레임워크로 사용하고 프로파일러와 같은 동적 분석 도구를 만들 수 있습니다. 전반적으로 Valgrind는 프로그램이 실행되는 동안 메모리를 모니터링하는 풍부한 기능 세트와 다양한 도구로 인해 전문가에게 탁월한 선택입니다.

Valgrind가 프로그램에서 메모리 누수를 감지했습니다.

Valgrind를 설치하려면:

Ubuntu/Debian 기반 배포판의 경우:

Fedora/RHEL 배포판의 경우:

Arch 기반 배포판의 경우:

8. 추적하다

strace는 사용자가 터미널에서 직접 시스템 호출과 신호를 추적할 수 있게 해주는 Unix용 사용자 공간 유틸리티입니다.

리눅스디버거 Strace

프로그래머는 이를 사용하여 스택 추적 덤프, 시스템 호출 필터링, 반환 코드 수정, 파일 설명자 추출 등을 수행할 수 있습니다.

더 중요한 것은 strace를 사용하면 실행 중인 프로그램에 연결할 수 있다는 것입니다. 이를 통해 컴퓨터에서 실행하는 모든 소프트웨어를 자세히 살펴보며 충돌을 일으킬 수 있는 원인에 대해 자세히 알아볼 수 있습니다.

추적을 설치하려면:

Ubuntu/Debian 기반 배포판의 경우:

Fedora/RHEL 배포판에서:

Arch 기반 배포판에서는:

아스날이 기다립니다

이러한 도구를 사용하면 이전에는 접근할 수 없다고 느꼈던 방식으로 코드를 찌르고, 자극하고, 분석할 수 있습니다. 따라야 할 약간의 학습 곡선이 있을 수 있지만 그만한 가치가 있습니다. Linux 프로그래밍에 대해 진지하게 생각한다면 디버거 사용 방법을 배우면 장기적으로 훨씬 더 많은 시간을 절약할 수 있습니다.

이제 최고의 Linux 디버거를 보유하고 있으므로 개발자와 프로그래머를 위한 최고의 Linux 배포판을 찾을 때입니다. 아>

이미지 크레디트: 저자의 모든 이미지.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다