cl(clear) : 특정 symbol에 걸려있는 breakpoint나 watchpoint를 제거할 때 사용 cl [변수명 or 함수명] : 변수명이나 함수명에 걸린 breakpoint나 watchpoint 제거
d(delete) : 모든 breakpoint 지우기 d [n] : n번째 breakpoint 제거
disable br : 모든 브레이크 포인트 비활성화 disable br [n ...] : n번째 브레이크 포인트 비활성화
enable br : 모든 브레이크 포인트 활성화 enable br [n ...] : n번째 브레이크 포인트 활성화
b n if var == N : var 변수의 값이 N일 때 n번 행에 브레이크 포인트 설정
condition [n] var == 0 : var 변수가 0일 때 n번 브레이크 포인트 동작
ex) b main b 10 b +3 b -3 cl main cl 10 cl test:main cl test:10 d d 5 disable br disable br 1 3 enable br enable br 1 3 b 10 if var == 0 condition 3 if var == 0
-> watch
특정 변수를 watchpoints로 걸어두어 소스의 지점에 거는 것이 아닌 변수 자체에 break를 설정
watchpoints가 걸린 변수의 값이 변할 때 break 걸리므로, 변수값의 변화와 코드의 변화를 확인할 때 유용
b와 동일하게 i(info) 명령어를 사용 가능
1 2 3 4 5 6 7 8 9
watch [변수명] : 변수에 값이 써질 때 브레이크 rwatch [변수명] : 변수의 값이 읽혀질 때 브레이크 awatch [변수명] : 변수에 읽기, 쓰기 경우에 브레이크
표현 형식 문자 o : 8진법으로 보여준다. x : 16진법으로 보여준다. u, d : 부호가 없는(unsigned) 표준 10진법으로 보여준다. t : 2진법으로 보여준다. c : 최초 1byte 값을 문자형으로 출력 f : 부동소수점 a : 가장 가까운 심볼의 오프셋 출력 s : 문자열로 출력 i : 어셈블리 형식으로 출력 z : hex, zero padded on the left
표시 유닛 크기(범위의 단위) 문자 b(byte) : 1byte h(Halfword) : 2byte w(word) : 4byte g(Giant) : 8byte
p [함수명] : 함수의 주소 출력 p [변수명] : 해당 변수의 값 출력 p [포인터 변수] : 포인터 변수의 주소값 출력 p &[변수명] : 변수의 주소 출력 p *[메모리 주소] : 메모리 주소의 값 출력 p *[포인터 변수] : 포인터 변수의 실제 값 출력 p *[포인터] : struct/class의 배열일 때 배열의 크기를 알림 p $[레지스터명] : 레지스터의 값 출력 p/[출력형식] [변수명]: 출력 형식에 맞추어 변수값 출력 p [변수명] [연산] : 변수에 연산한 값 출력 p (캐스팅)[변수명] : 변수를 캐스팅하여 출력 p [포인터 변수 or 배열]+[n] : 특정 주소 + n번째 위치 출력 p [변수명] = [값] : 특정 변수의 값을 설정 p '[파일명]'::[변수명] : p 명령어는 지역 변수를 우선시하므로, 동일한 이름의 전역 변수를 사용할 때 :: 를 사용 p [함수명]::[변수명]: 특정 함수에 있는 변수를 확인 p (*this) : 디버깅 하다가 객체의 내용을 보고 싶을 때, class 내부에서 간단히 사용
표현 형식 문자 o : 8진법으로 보여준다. x : 16진법으로 보여준다. u, d : 부호가 없는(unsigned) 표준 10진법으로 보여준다. t : 2진법으로 보여준다. c : 최초 1byte 값을 문자형으로 출력 f : 부동소수점 a : 가장 가까운 심볼의 오프셋 출력 s : 문자열로 출력 i : 어셈블리 형식으로 출력
ex) p main p a p ptrb p &a p *0x1122334 p *ptrb p $rip p/t bina p/o ob p/x hex p/c chara p i * 4 - 2 p (char*)a p (array[0]+5) p a=1 p 'test.c'::a p func1::a
display [변수명] : 특정 변수의 값을 매번 출력할 dispaly/[출력 형식] [변수명] : 출력 형식에 맞추어 변수값 출력 undisplay [번호] : 출력하던 display 변수 제거 disable display [번호] : 일시적으로 디스플레이 중단 enable display [번호] : 중단했던 번호 다시 출력
표현 형식 문자 o : 8진법으로 보여준다. x : 16진법으로 보여준다. u, d : 부호가 없는(unsigned) 표준 10진법으로 보여준다. t : 2진법으로 보여준다. c : 최초 1byte 값을 문자형으로 출력 f : 부동소수점 a : 가장 가까운 심볼의 오프셋 출력 s : 문자열로 출력 i : 어셈블리 형식으로 출력
ex) display a display/x a disable display 1 enable display 1 undisplay 1
-> set
디버깅 도중에 존재하는 변수의 값을 변경하거나 디버깅에 사용되는 변수를 정의할 때 사용
set 명령어는 축약어가 존재하지 않음
p 명령어와 동일하게 &와 *를 지원하므로 특정 메모리의 값도 변경 가능
1 2 3 4 5 6 7 8 9 10 11 12 13 14
set [변수명] = [값] : 변수의 값 변경 set $[변수명] = [값] : 변수를 정의, 프로그램 내에 존재하는 일반 변수와 구별하기 위해 $를 필수로 붙여줘야 함 set {타입}[주소] = [값] : 특정 메모리에 값을 지정