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

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

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

일반적으로 Seer는 코드 관리자에서 소스 코드를 탭으로 표시합니다. 프로그램의 어셈블리도 탭으로 표시할 수 있습니다.
"View->Assembly View"를 선택하면 소스 코드 탭 옆에 현재 실행 중인 어셈블리를 표시하는 추가 탭이 나타납니다. 예시입니다.

소스 코드 탭과 마찬가지로 어셈블리 탭에서도 중단점을 설정할 수 있습니다. 현재 명령어가 강조 표시됩니다.
"중단점" 탭과 "스택 프레임" 탭의 항목을 더블클릭하면 해당 주소의 어셈블리가 표시됩니다.
설정에 정의된 "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 프로젝트 페이지에서 작업을 생성해 주세요.
멋진 세상입니다.