나는 gdb에서 프로그램을 디버깅하고 있었는데 어떻게 든 내가 본 적이 없거나 들어 본 적이없는 새로운 기능, 명령을 제공하는 것 외에도 코드를보고 탐색 할 수있는 분할보기를 발견했습니다.
이게 뭐야? 내가 뭘했는지, 좀 더 구체적으로는 어떻게이 분할 화면 모드를 다시 얻을 수 있나요? 이 모드에 대한 이름이 있습니까, 아니면 사용 방법에 대해 읽을 수있는 곳이 있습니까?
답변
TUI (농담 아님)라고합니다. 예를 들어 gdbtui
또는 gdb -tui
…로 시작하십시오 .
답변
ctrl+ x및 ctrl+ 를 눌러 동적으로 트리거 할 수 있습니다 a.
답변
두 가지 변형이 있습니다.
- 코드 만보기
보도 CTRL
X
함께 다음 1
- 소스와 어셈블리를 모두 보려면
‘CTRL’ ‘X’를 함께 누른 다음 ‘2’를 누르십시오.
http://www.cs.fsu.edu/~baker/ada/gnat/html/gdb_23.html
코드 및 어셈블리가있는 뷰의 스크린 샷입니다.
답변
“-“(대시) 명령을 사용하여 gdb 셸에서 시작할 수도 있습니다. 그래도 동적으로 끄는 방법을 모르겠습니다.
답변
GDB 대시 보드
https://github.com/cyrus-and/gdb-dashboard
GDB 대시 보드는 공식 GDB Python API를 사용 하고 기본 명령next
과 같이 GDB가 중지 될 때 원하는 정보를 인쇄합니다 .display
Vs TUI :
-
셸을 더 마법의 저주 상태에 두는 대신 stdout으로 인쇄하므로 더 강력합니다. 예 :
vi
모드에서.inputrc
문제 발생 : /superuser/180512/how-to-turn-off-gdb-tui/927728#927728- stdout / stderr 프로그램이 인터페이스를 중단합니다 : TUI 모드의 GDB : stderr와 ui의 상호 작용을 처리하는 방법
-
Python에서 고도로 구성 가능 : 디버깅중인 항목에 따라 출력 할 항목과 각 섹션의 크기를 선택할 수 있습니다.
가장 유용한 뷰는 이미 구현되어 있습니다 : 소스, 어셈블리, 레지스터, 스택, 메모리, 스레드, 표현식 …하지만 GDB Python API에 노출되는 모든 정보로 쉽게 확장 할 수 있어야합니다.
TUI는 소스, 어셈블리 및 레지스터 중 두 개만 표시 할 수 있습니다. 수정하고 싶지 않다면 물론 C 소스 코드입니다 😉
나는 GDB가 기본적으로 이와 같은 설정과 함께 제공되어야한다고 믿습니다. 그렇게하면 훨씬 더 많은 사용자를 끌어들일 것입니다.
아, 그리고 메인 개발자 인 Andrea Cardaci 는 매우 반응이 좋고 훌륭했습니다. 큰 명성.
답변
layout
gdb에 명령을 입력 하면 분할 창이 표시됩니다.
답변
GDB가 표준 모드에있을 때를 사용 win
하면 TUI 모드로 자동 전환됩니다.
TUI 모드에 대한 기타 명령 :
info win
표시된 모든 창의 크기를 나열하고 제공합니다.focus next | prev | src | asm | regs | split
이름이 지정된 창에 포커스를 설정합니다. 이 명령을 사용하면 스크롤 키가 다른 창에 영향을 미칠 수 있도록 활성 창을 변경할 수 있습니다.
읽기 여기에 더 많은 도움을 형성한다.