[gdb] 코드가있는 gdb 분할보기

나는 gdb에서 프로그램을 디버깅하고 있었는데 어떻게 든 내가 본 적이 없거나 들어 본 적이없는 새로운 기능, 명령을 제공하는 것 외에도 코드를보고 탐색 할 수있는 분할보기를 발견했습니다.

사진은 미안하지만 ttys에는 스크린 샷이 없습니다.

이게 뭐야? 내가 뭘했는지, 좀 더 구체적으로는 어떻게이 분할 화면 모드를 다시 얻을 수 있나요? 이 모드에 대한 이름이 있습니까, 아니면 사용 방법에 대해 읽을 수있는 곳이 있습니까?



답변

TUI (농담 아님)라고합니다. 예를 들어 gdbtui또는 gdb -tui…로 시작하십시오 .


답변

ctrl+ xctrl+ 를 눌러 동적으로 트리거 할 수 있습니다 a.


답변

두 가지 변형이 있습니다.

  1. 코드 만보기

보도 CTRL X함께 다음 1

  1. 소스와 어셈블리를 모두 보려면

‘CTRL’ ‘X’를 함께 누른 다음 ‘2’를 누르십시오.

http://www.cs.fsu.edu/~baker/ada/gnat/html/gdb_23.html

코드 및 어셈블리가있는 뷰의 스크린 샷입니다.
여기에 이미지 설명 입력

이 놀라운 Github 프로젝트도 확인하십시오.


답변

“-“(대시) 명령을 사용하여 gdb 셸에서 시작할 수도 있습니다. 그래도 동적으로 끄는 방법을 모르겠습니다.


답변

GDB 대시 보드

https://github.com/cyrus-and/gdb-dashboard

GDB 대시 보드는 공식 GDB Python API를 사용 하고 기본 명령next 과 같이 GDB가 중지 될 때 원하는 정보를 인쇄합니다 .display

Vs TUI :

  • 셸을 더 마법의 저주 상태에 두는 대신 stdout으로 인쇄하므로 더 강력합니다. 예 :

  • Python에서 고도로 구성 가능 : 디버깅중인 항목에 따라 출력 할 항목과 각 섹션의 크기를 선택할 수 있습니다.

    가장 유용한 뷰는 이미 구현되어 있습니다 : 소스, 어셈블리, 레지스터, 스택, 메모리, 스레드, 표현식 …하지만 GDB Python API에 노출되는 모든 정보로 쉽게 확장 할 수 있어야합니다.

    TUI는 소스, 어셈블리 및 레지스터 중 두 개만 표시 할 수 있습니다. 수정하고 싶지 않다면 물론 C 소스 코드입니다 😉

여기에 이미지 설명 입력

나는 GDB가 기본적으로 이와 같은 설정과 함께 제공되어야한다고 믿습니다. 그렇게하면 훨씬 더 많은 사용자를 끌어들일 것입니다.

아, 그리고 메인 개발자 인 Andrea Cardaci 는 매우 반응이 좋고 훌륭했습니다. 큰 명성.

참고 항목 : 대화 형 디버깅 중에 gdb 출력을 강조 표시하고 색상을 지정하는 방법은 무엇입니까?


답변

layoutgdb에 명령을 입력 하면 분할 창이 표시됩니다.


답변

GDB가 표준 모드에있을 때를 사용 win하면 TUI 모드로 자동 전환됩니다.
TUI 모드에 대한 기타 명령 :

  • info win
    표시된 모든 창의 크기를 나열하고 제공합니다.
  • focus next | prev | src | asm | regs | split
    이름이 지정된 창에 포커스를 설정합니다. 이 명령을 사용하면 스크롤 키가 다른 창에 영향을 미칠 수 있도록 활성 창을 변경할 수 있습니다.

읽기 여기에 더 많은 도움을 형성한다.