
Seer - gdb용 GUI 프런트엔드
Seer - Linux용 gdb의 GUI 프론트엔드입니다. (Ernie Pasveer [email protected])
이 프로젝트는 활발히 개발 중입니다. 목표는 gdb를 위한 간단하면서도 보기 좋은 GUI를 제공하는 것입니다.
버그나 원하는 기능이 있으면 제 이메일로 보고하거나 GitHub 프로젝트 페이지에 task를 생성해 주세요.
Seer는 패키지 관리자 또는 소스 코드로 설치할 수 있습니다.
[!NOTE] 설치 전에 요구 사항이 충족되었는지 확인하세요.
Linux
C++17
"mi" 인터프리터가 있는 gdb (gdb --interpreter=mi 실행으로 확인)
CMake (3.5.0 이상)
QT6
QT5
다음 패키지 관리자를 통해 사용할 수 있습니다:
$ pamac install seer
$ zypper install seergdb
Flathub 웹사이트. 여기
$ flatpak install flathub io.github.epasveer.seer
베타 Seer 버전. GitHub의 Seer 릴리스 페이지.
중요: GDB Launcher에서 gdb를 실행하려면 flatpak-spawn --host가 필요합니다. https://github.com/epasveer/seer/issues/377#issuecomment-3620844808 참조.
seer.flatpak을 다운로드하세요. 설치:
$ flatpak install -y --bundle --user seer.flatpak
베타 Seer 버전. GitHub의 Seer 릴리스 페이지.
$ snap install seergdb_<version>.snap --dangerous
(권장) 아래 지침에 따라 Qt6로 Seer를 빌드할 수 있습니다.
https://github.com/epasveer/seer/wiki/Building-Seer---Qt6
당분간은 아래 지침에 따라 Qt5로도 빌드할 수 있습니다.
https://github.com/epasveer/seer/wiki/Building-Seer---Qt5
GitHub의 Seer Wiki 페이지를 확인하세요.
Seer는 명령줄에서 디버깅할 프로그램을 쉽게 시작할 수 있도록 설계되었습니다. gdb에는 프로그램 디버깅을 위한 여러 방법이 있습니다. Seer도 자연스럽게 여러 방법을 지원합니다.
Seer를 실행하는 모든 방법을 보려면 Wiki로 이동하세요.
https://github.com/epasveer/seer/wiki/Starting-Seer
다양한 Seer 뷰와 대화상자의 예시입니다.
Seer의 메인 뷰는 다음과 같습니다:

소스/함수/타입/변수/라이브러리
변수/레지스터 정보
코드 매니저.
중단점, 감시점, 캐치점, 출력점, 수동 gdb 명령 및 로그.
스택 프레임 정보.
스레드 정보.
Gdb의 역방향 디버깅 모드 지원.
실행 파일 열기 대화상자가 호출되면 다음과 같습니다:

실행 파일의 모든 텍스트 출력은 Seer 콘솔로 전달됩니다. 실행 파일에 대한 텍스트 입력도 콘솔을 통해 입력할 수 있습니다.

일반적으로 Seer는 코드 매니저에 소스 코드만 탭으로 표시합니다. 프로그램의 어셈블리도 탭으로 표시할 수 있습니다.
"View->Assembly View"를 선택하면 소스 코드 탭 옆에 현재 실행 중인 어셈블리를 표시하는 추가 탭이 표시됩니다. 예시는 다음과 같습니다.

소스 코드 탭과 마찬가지로 어셈블리 탭에서도 중단점을 설정할 수 있습니다. 현재 명령어는 강조 표시됩니다.
"Breakpoints" 탭과 "Stack frames" 탭의 항목을 더블 클릭하면 해당 주소의 어셈블리가 표시됩니다.
구성 설정에 정의된 대로 "Nexti" 및 "Stepi" 단축키가 있습니다. 일반적으로 "Ctrl+F5" 및 "CTRL+F6"입니다. 어셈블리 탭에서 "^F"를 사용하면 강력한 검색 바가 표시됩니다.
Seer의 어셈블리 기능은 새롭습니다. 변경 사항/기능을 자유롭게 제안해 주세요.
메모리 시각화 도구에서 원시 메모리 내용을 볼 때 다음과 같습니다:
| 메모리 | 디스어셈블리 |
|---|---|
![]() | ![]() |
배열 시각화 도구에서 배열 내용을 볼 때 다음과 같습니다:
| 일반 | 스플라인 | 산점도 |
|---|---|---|
![]() | ![]() | ![]() |
두 배열을 X-Y 플롯으로 사용할 수 있습니다. 예를 들어, 이 간단한 'points' 배열은 도형의 X-Y 윤곽을 형성합니다.
int main() {
int points[] = {50,1,20,91,97,35,2,35,79,91,50,1};
return 0;
}
| X 값 | Y 값 | XY 값 |
|---|---|---|
![]() | ![]() | ![]() |
구조체 시각화 도구에서 C/C++ 구조체 또는 C++ 클래스의 내용을 볼 때 다음과 같습니다. 이 예시는 Seer가 현재 위치한 C++ 클래스의 "*this" 내용을 보여줍니다. 기본 타입인 모든 구조체 멤버는 편집할 수 있습니다.

더 가볍지만 포인터를 따라갈 수 없고 편집할 수 없는 기본 구조체 시각화 도구도 있습니다.
이미지인 원시 메모리 내용을 볼 때 이미지 시각화 도구를 사용할 수 있습니다.

버그나 기능에 대해 [email protected]으로 이메일을 보내거나 GitHub 프로젝트 페이지에 task를 생성하세요.
아름다운 세상입니다.