2015년 11월 14일 토요일
2015년 11월 10일 화요일
gdbserver
gdbserver 실행 (Target)
# gdbserver --attach :5039 <PID> Attached; pid = 7148 Listening on port 5039 또는 # gdbserver :5039 <BINARY PATH> Process xxx created; pid = 6232 Listening on port 5039 |
$ gdb-multiarch
(gdb)
set
arch arm
(gdb)
file
<BINARY PATH>
(gdb) target remote [gdbserver ip]:5039
참고
https://sourceware.org/gdb/wiki/BuildingCrossGDBandGDBserver
gdb
- 심볼파일 로드
(gdb) symbol-file
- 사용 가능한 명령어 리스트
(gdb) 명령 <tab><tab>
- 콜스택
(gdb) i s
- 레지스터 보기
(gdb) i r pc
(gdb) p/x $pc
(gdb) set $sp += 4
- 변수 값 보기
(gdb) x 변수
- 포인터 대상 출력
(gdb) p *(구조체 또는 클래스*)어드레스
(gdb) p *this
- 구조체 또는 클래스의 크기 구하기
- 메모리맵
$ cat /proc/<pid>/maps
- print 출력 길이 제한
- print format
(gdb) set print pretty on
- print 옵션
(gdb) set print 항목 값
- 배열 P 에서 N개의 요소를 출력
(gdb) p P@N
- myVector 의 배열 주소
myVector._M_impl._M_start
- 로칼 변수
- 타입 보기
함수 정의 보기
(gdb) i fu
변수 보기
(gdb) i va
스택 프레임 정보
(gdb) i f
(gdb) fr [번호]
줄 정보
(gdb) i li
소스 리스트 보기
(gdb) i sources
공유라이브러리 보기
(gdb) i sh
시그널 핸들 상태
(gdb) i h
실행 옵션
빌드 옵션 확인
-configuration
-nx 설정파일 실행 안 함
부트시퀀스
-interpreter 옵션 처리
.
- 시스템 설정 파일 실행(/etc/gdb/gdbinit)
- 사용자 설정 파일 실행(~/.gdbinit)
- -iex 및 -ix 옵션을 순서대로 실행
- -ex 와 -x 를 제외한나머지 옵션 실행
- 현재 디렉토리의 설정 파일 실행(./.gdbinit) (set auto-load local-gdbinit on 필요)
- auto-load
Disable auto-load $ gdb -iex "set auto-load python-scripts off" myprogram
- -ex 및 -x 옵션을 순서대로 처리
- command history 로드
참고https://sourceware.org/gdb/onlinedocs/gdb/index.html
https://sourceware.org/gdb/wiki/BuildingCrossGDBandGDBserver
arm 레지스터 이름
r9, sb, static base r10, sl, stack limit
r11, fp, frame pointer
r12, ip, intra-procedure call scratch register
r13, sp, stack pointer
r14, lr, link register
r15, pc, program counter
http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0040d/ch06s02s01.html
r11, fp, frame pointer
r12, ip, intra-procedure call scratch register
r13, sp, stack pointer
r14, lr, link register
r15, pc, program counter
http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0040d/ch06s02s01.html
피드 구독하기:
글 (Atom)