나는 ddd, nemiver, emacs, vim 또는 다른 프론트 엔드를 사용해야한다고 대답하지 말고 gdb를 그대로 선호하지만 일부 터미널 색상으로 출력을보고 싶습니다.
l
가 구현 되면 a에 추가 하고 Dev Nirvana를 입력합니다. l
hook-stop
나는 ddd, nemiver, emacs, vim 또는 다른 프론트 엔드를 사용해야한다고 대답하지 말고 gdb를 그대로 선호하지만 일부 터미널 색상으로 출력을보고 싶습니다.
l
가 구현 되면 a에 추가 하고 Dev Nirvana를 입력합니다. l
hook-stop
답변:
~/.gdbinit
색상을 가지도록 조정할 수 있습니다 . mammon을 .gdbinit
사용할 수 있습니다 :
https://github.com/gdbinit/gdbinit
원하는만큼 조정할 수도 있습니다. 나는 이 SO 답변 덕분에 이것을 발견했다 . 얻을 수있는 출력 종류는 다음과 같습니다.
GitHub 리포지토리도 사용할 수 있습니다 : https://github.com/gdbinit/Gdbinit
참고로, 동일한 아이디어가 lldb 에도 적용되었습니다 .
동일한 개념에 따라 GDB 대시 보드 는 Python에서 GDB를위한 모듈 식 시각적 인터페이스를 제공합니다.
또 다른 유사한 프로젝트는 GDB의 Python 지원을 사용하여 확장 성을 제공하므로 https://github.com/dholm/voidwalker를 확인 하십시오.
@dholm은 또한 이전 .gdbinit에서 영감을 얻은 .gdbinit를 제공합니다 .
일부 프로젝트는 개선 된 디스플레이를 포함하여 유용한 기능 세트를 제공합니다. PEDA 또는 pwndbg 의 경우입니다 . 후자는 다음과 같은 설명을 제공합니다.
PEDA 대체품. 우리의 좋은 친구의 정신
windbg
,pwndbg
발음된다pwnd-bag
.
- 속도
- 복원력
- 깨끗한 코드
PEDA와 유사한 디버깅 및 개발 개발을 지원하는 명령을 제공하며 더 나은 표시가 가능합니다 (프로젝트의 주요 초점은 아니지만). 소프트웨어가 아직 개발 중이며 아직 제대로 릴리스되지 않았습니다.
프로젝트 설명 상태 :
Voltron은 해커를위한 확장 가능한 디버거 UI입니다. 다른 터미널에서 실행되는 유틸리티 뷰를 디버거 (LLDB 또는 GDB)에 연결하여 디스 어셈블리, 스택 내용, 레지스터 값 등과 같은 유용한 정보를 표시하면서도 이전과 동일한 디버거 CLI를 제공합니다.
.gdbinit
자동으로 통합하도록을 수정할 수 있습니다 . 그러나 디스플레이 자체는 GDB 외부에 있습니다 (예 : tmux 분할).
GEF 는 또 다른 옵션이며 다음과 같이 설명됩니다.
동적 분석 및 익스플로잇 개발 과정에서 Python API를 사용하여 GDB에 추가 기능을 제공하기 위해 주로 익스플로 터 및 리버스 엔지니어가 사용하는 것이 목표입니다.
set $SHOWCPUREGISTERS = 0
했습니까? 기본적으로 몇 가지 매개 변수를 설정할 수 있으며 필요에 따라 코드를 항상 수정할 수 있습니다.
색상은 아니지만 gdb의 텍스트 gui를 고려하십시오 . 사용 가능한 gdb와는 크게 다릅니다.
다음과 같이 시작할 수 있습니다.
gdb -tui executable.out
스크린 샷 :
보다시피 주요 기능은 다음과 같습니다.
색상을 사용하여 gdb의 모양을 크게 향상시킬 수 있습니다. 이는 다음 방법 중 하나를 통해 수행됩니다.
"프롬프트 프롬프트"를 통한 컬러 프롬프트. 예를 들어, 프롬프트를 굵고 빨간색으로 표시하십시오.
set prompt \033[1;31m(gdb) \033[m
또는 프롬프트를 굵고 빨간색으로 새 모양으로 만듭니다.
set prompt \033[01;31m\n\n#####################################> \033[0m
후크를 통한 컬러 명령
모든 예제는 Michael Kelleher가 작성한 다음 블로그 게시물에서 볼 수 있습니다.
다가오는 GDB 8.3의 새로운 기능 !
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=blob;f=gdb/NEWS
이제 CLI 및 TUI에 터미널 스타일을 사용할 수 있습니다. GNU 소스 하이라이트는 또한 소스 코드 스 니펫의 스타일을 제공하는 데 사용될 수 있습니다. 자세한 정보는 아래의 "스타일 설정"명령을 참조하십시오.
gdb 8.3
medium.com/@simonconnah/… 설치 방법에 대한 자습서를 여기에서 찾을 수 있습니다. 컴퓨터에는 최소 512MB 의 RAM이 필요합니다. 그렇지 않으면 gcc
컴파일러가 휴지통을 시작합니다.
#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
깔끔하게, 방금 colout을 사용 하여이 핵을 발견했습니다 : https://github.com/nojhan/colout/blob/master/colout/example.gdbinit
bash: colout: command not found
내가 달릴 때 나 에게 말한다bt f
다음과 같이 강조하고 싶었습니다. 라이브러리가 아닌 소스 파일에 속하는 스택 추적 행을 강조하십시오.
해결책은 gdb-python을 사용하는 것입니다 (MSYS에서; Linux에서는 일반적으로 gdb
이미 Python이 내장되어 있습니까?), hook backtrace
, use
python stack_trace = gdb.execute('backtrace', False, True')
그런 다음 stack_trace
파이썬의 정규 표현식으로 처리하고 인쇄하십시오. 굵은 색과 다른 색은 다음과 같은 기능으로 달성됩니다.
def term_style(*v):
"""1 is bold, 30--37 are the 8 colours, but specifying bold may also
change the colour. 40--47 are background colours."""
return '\x1B['+';'.join(map(str, v))+'m'
#Use like this:
print term_style(1) + 'This will be bold' + term_style(0) #Reset.
print term_style(1,30) + 'This will be bold and coloured' + term_style(0)
print term_style(1,30,40) + 'Plus coloured background' + term_style(0)
이 구성으로 또 다른 좋은 색상 조합이 제공됩니다 . 백 트레이스 검사가 훨씬 쉬워집니다. 사용하려면 해당 파일을 다른 이름으로 저장하고 ~/.gdbinit
gdb를 정상적으로 실행하십시오.
원하는 색상을 얻을 수 있습니다.
# gdb
(gdb) shell echo -en '\E[47;34m'"\033[1m"
...
anything is now blue foreground and white background
...
(gdb) shell tput sgr0
... back to normal