디버거 GDB

2065 단어
문제 해결: GDBCan't find member of namespace, class, struct, or union named
1.일단 디버깅 스위치가 켜졌는지 확인-g
2.셸 command$gdb 실행 파일 이름
gdb에 들어가면list가 됩니다
list 54 파일의 54 표시
3.gdb로 디버깅을 할 때,list에서main을 표시하기 시작합니다.cpp 코드입니다. 호출 프로그램 xxx를 볼 수 없습니다.cpp의 코드는 어떻게 해야만 볼 수 있습니까?간단하다cpp의 한 줄에 단점을 설정한 다음에 프로그램이 이 줄로 실행될 때 s를 누르면 step라는 뜻이다. 그러면 프로그램은 xxx에 들어간다.cpp 코드입니다.
4.info stack 명령where
  :
backtrace
bt
               。 :

frame # 현재 스택 프레임 보기 및 현재 코드 표시
혹은
info frame # 현재 스택 프레임에 대한 자세한 정보 얻기
5, 강제 함수 반환 만약 당신의 디버깅 단점이 어떤 함수에 있고 문장이 다 실행되지 않았다면.return 명령을 사용하면 실행되지 않은 문장을 무시하고 되돌려줍니다.return return 은return 명령을 사용하여 현재 함수의 실행을 취소하고 즉시 되돌려줍니다. 만약 을 지정하면 이 표현식의 값은 함수의 되돌림 값으로 간주됩니다.
6. 점프 실행은 일반적으로 디버깅된 프로그램은 프로그램 코드의 운행 순서에 따라 순서대로 실행된다.GDB는 프로그램의 실행 순서를 수정할 수 있고 프로그램의 임의 점프를 수행할 수 있는 기능을 제공한다.이 기능은 GDB의 jump 명령으로 끝낼 수 있습니다: jump 다음 문장의 운행점을 지정합니다. 파일의 줄 번호일 수도 있고 file: line 형식일 수도 있고 +num 같은 편이량 형식일 수도 있습니다.다음 운행문은 어디서부터 시작되는지 표식으로 보여 준다.jump
여기
는 코드 줄의 메모리 주소입니다.주mp 명령은 현재 프로그램 창고의 내용을 바꾸지 않습니다. 따라서 한 함수에서 다른 함수로 넘어갈 때, 함수가 실행되고 돌아올 때, 창고 조작을 할 때 오류가 발생할 수 있습니다. 아마도 결과는 매우 이상할 것입니다. 심지어는 프로그램Core Dump가 발생할 수도 있습니다.그래서 같은 함수에서 점프를 하는 것이 가장 좋다.어셈블리에 익숙한 사람들은 프로그램이 실행될 때 현재 코드가 있는 메모리 주소를 저장하는 레지스터가 있다는 것을 안다.그래서 Jump 명령은 이 레지스터의 값을 바꾸는 것이다.따라서 'set $pc' 를 사용하여 점프 실행 주소를 변경할 수 있습니다.예: set $pc = 0x485
7. 신호량 생성은singal 명령을 사용하여 디버깅된 프로그램에 신호량을 생성할 수 있다.예: 중단 신호 Ctrl+C.이것은 프로그램의 디버깅에 매우 편리하다. 프로그램이 실행하는 임의의 위치에 인터럽트를 설정하고 이 인터럽트는 GDB로 신호량을 생성할 수 있다. 이런 정확한 신호는 어느 곳에서 매우 유리한 프로그램의 디버깅을 만들 수 있다.문법은:signal , UNIX의 시스템 신호량은 보통 1에서 15까지입니다.그래서 수치도 이 범위에 있다.single 명령은 셸의kill 명령과 달리 시스템의kill 명령은 디버그 프로그램에 신호를 보낼 때 GDB에서 캡처하고,single 명령이 보내는 신호는 디버그 프로그램에 직접 보낸다.
8, 표시 변수 유형 (gdb) whatis width type = double
9, 변수의 크기 설정 (gdb) set var width=47
참조 링크:http://blog.csdn.net/cybertan/article/details/6219574

좋은 웹페이지 즐겨찾기