[gdb] 대화식 디버깅 중 gdb 출력을 강조 표시하고 색상을 지정하는 방법은 무엇입니까?

나는 ddd, nemiver, emacs, vim 또는 다른 프론트 엔드를 사용해야한다고 대답하지 말고 gdb를 그대로 선호하지만 일부 터미널 색상으로 출력을보고 싶습니다.



답변

.gdbinit

~/.gdbinit색상을 가지도록 조정할 수 있습니다 . mammon을 .gdbinit사용할 수 있습니다 :

https://github.com/gdbinit/gdbinit

원하는만큼 조정할 수도 있습니다. 나는 이 SO 답변 덕분에 이것을 발견했다 . 얻을 수있는 출력 종류는 다음과 같습니다.

.gdbinit

GitHub 리포지토리도 사용할 수 있습니다 : https://github.com/gdbinit/Gdbinit

참고로, 동일한 아이디어가 lldb 에도 적용되었습니다 .

GDB 대시 보드

동일한 개념에 따라 GDB 대시 보드 는 Python에서 GDB를위한 모듈 식 시각적 인터페이스를 제공합니다.

GDB 대시 보드

(보이드) 워커

또 다른 유사한 프로젝트는 GDB의 Python 지원을 사용하여 확장 성을 제공하므로 https://github.com/dholm/voidwalker를 확인 하십시오.

@dholm은 또한 이전 .gdbinit에서 영감을 얻은 .gdbinit를 제공합니다 .

(보이드) 워커

pwndbg

일부 프로젝트는 개선 된 디스플레이를 포함하여 유용한 기능 세트를 제공합니다. PEDA 또는 pwndbg 의 경우입니다 . 후자는 다음과 같은 설명을 제공합니다.

PEDA 대체품. 우리의 좋은 친구의 정신 windbg, pwndbg발음된다 pwnd-bag.

  • 속도
  • 복원력
  • 깨끗한 코드

PEDA와 유사한 디버깅 및 개발 개발을 지원하는 명령을 제공하며 더 나은 표시가 가능합니다 (프로젝트의 주요 초점은 아니지만). 소프트웨어가 아직 개발 중이며 아직 제대로 릴리스되지 않았습니다.

pwndbg

볼트론

프로젝트 설명 상태 :

Voltron은 해커를위한 확장 가능한 디버거 UI입니다. 다른 터미널에서 실행되는 유틸리티 뷰를 디버거 (LLDB 또는 GDB)에 연결하여 디스 어셈블리, 스택 내용, 레지스터 값 등과 같은 유용한 정보를 표시하면서도 이전과 동일한 디버거 CLI를 제공합니다.

.gdbinit자동으로 통합하도록을 수정할 수 있습니다 . 그러나 디스플레이 자체는 GDB 외부에 있습니다 (예 : tmux 분할).

볼트론

GEF

GEF 는 또 다른 옵션이며 다음과 같이 설명됩니다.

동적 분석 및 익스플로잇 개발 과정에서 Python API를 사용하여 GDB에 추가 기능을 제공하기 위해 주로 익스플로 터 및 리버스 엔지니어가 사용하는 것이 목표입니다.

GEF


답변

색상은 아니지만 gdb의 텍스트 gui를 고려하십시오 . 사용 가능한 gdb와는 크게 다릅니다.

다음과 같이 시작할 수 있습니다.

gdb -tui executable.out

스크린 샷 :

여기에 이미지 설명을 입력하십시오

보다시피 주요 기능은 다음과 같습니다.

  • 소스의 어떤 라인과 주변 라인을 보여줍니다
  • 중단 점 표시

답변

나는 당신이 프론트 엔드를 원하지 않았다는 것을 알고 있습니다. 그러나 cgdb 는 gdb와 매우 비슷하지만 텍스트 모드이지만 코드에서 구문 강조 표시가있는 위의 소스 창이 있습니다.


답변

색상을 사용하여 gdb의 모양을 크게 향상시킬 수 있습니다. 이는 다음 방법 중 하나를 통해 수행됩니다.

  1. “프롬프트 프롬프트”를 통한 컬러 프롬프트. 예를 들어, 프롬프트를 굵고 빨간색으로 표시하십시오.

    set prompt \033[1;31m(gdb) \033[m

    또는 프롬프트를 굵고 빨간색으로 새 모양으로 만듭니다.

    set prompt \033[01;31m\n\n#####################################> \033[0m

    여기에 이미지 설명을 입력하십시오

  2. 후크를 통한 컬러 명령

  3. “list”명령의 색상이 지정된 구문 강조 표시.

모든 예제는 Michael Kelleher가 작성한 다음 블로그 게시물에서 볼 수 있습니다.

“GDB 아름답게하기”, 2010 년 5 월 12 일 (아카이브를 통해)

“실험적인 GDB 구문 강조”, 2010 년 5 월 15 일 (archive.org를 통해)


답변

다가오는 GDB 8.3의 새로운 기능 !

https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=blob;f=gdb/NEWS

이제 CLI 및 TUI에 터미널 스타일을 사용할 수 있습니다. GNU 소스 하이라이트는 또한 소스 코드 스 니펫의 스타일을 제공하는 데 사용될 수 있습니다. 자세한 정보는 아래의 “스타일 설정”명령을 참조하십시오.

gdb 8.2.91.20190401-23.fc30의 스크린 샷


답변

#into .gdbinit
shell mkfifo /tmp/colorPipe

define hook-disassemble
echo \n
shell cat /tmp/colorPipe | c++filt | highlight --syntax=asm -s darkness -Oxterm256 &
set logging redirect on
set logging on /tmp/colorPipe
end

define hookpost-disassemble
hookpost-list
end

define hook-list
echo \n
shell cat /tmp/colorPipe | c++filt | highlight --syntax=cpp -s darkness -Oxterm256 &
set logging redirect on
set logging on /tmp/colorPipe
end

define hookpost-list
set logging off
set logging redirect off
shell sleep 0.1s
end

define hook-quit
shell rm /tmp/colorPipe
end

define re
hookpost-disassemble
echo \033[0m
end
document re
Restore colorscheme
end

경고 : 버기. TUI 지원, ‘사용자 모드’해킹이 없습니다.

여기서 주요 부분을 찾아서
약간 수정했습니다. 강조 표시, c ++ filt가 필요합니다. 색상이 엉망이되면 명령을 다시 발행하십시오.


답변

cgdb 보다 훨씬 낫다 gdb -tui