티스토리 뷰
lldb (Debugger)
- c 코드를 검사하는 도구
Debugger
- 코드를 검사할 수 있는 도구
Debugging
- 코드에서 버그를 제거하는 것
lldb 사용하기 위해 사용하는 옵션 + 유용옵션
gcc
- -g: 컴파일러에게 디버깅 정보를 출력 파일에 포함하도록 지시한다.
- -fsanitize=address: 메모리 오류를 찾아줍니다. (-g 다음에 써주는 것이 좋다.)
Execution Command
http://minsone.github.io/ios/mac/xcode-lldb-debugging-with-xcode-and-lldb
./cub3d (실행 파일) debugging 하기
lldb ./cub3d
(lldb) run // (lldb) r
ex)
lldb ./cub3d //** ./cub3d debugging
(lldb) target create "./cub3d"
Current executable set to '/mnt/c/Users/82106/Desktop/42Cursus/02_ft_cub3d42/cub3d' (x86_64).
(lldb) run //** 실행
// ./cub3d debugging 내용
Process 19948 launched: '/mnt/c/Users/82106/Desktop/42Cursus/02_ft_cub3d42/cub3d' (x86_64)
Xlib: extension "MIT-SHM" missing on display "172.27.112.1:0.0".
Process 19948 stopped
* thread #1, name = 'cub3d', stop reason = signal SIGSEGV: address access protected (fault address: 0x605df5f5f670)
frame #0: 0x000055555555e583 cub3d`ft_tex_y(info=0x00007fffffed1a40, map=0x00006080000004a0, tex=0x0000603000002aa0, x=0) at ft_tex.c:37:29
34 {
35 tex->tex_y = (int)tex->tex_pos & (TEX_HEIGHT - 1);
36 tex->tex_pos += tex->step;
-> 37 tex->color = info->texture[tex->tex_num][TEX_HEIGHT * tex->tex_y + tex->tex_x];
38 if (map->side)
39 tex->color = (tex->color >> 1) & 8355711;
40 info->buf[y][x] = tex->color;
- End(나가기)
- lldb 나가기
(lldb) q
- Continue
- 정지된 프로그램을 계속해서 진행
(lldb) continue
(lldb) c
- Step Over
- 다음 줄로 진행, 현재 Frame에서 다음 단계로
(lldb) thread step-over
(lldb) next
(lldb) n
변수 검사
원시타입(primitive type), 구조체 변수 검사
(lldb) p [변수명]
(lldb) po [변수명]
지역 변수 검사(local)
특정 지역의 모든 변수 출력 (매개변수 포함)
(lldb) frame variable
(lldb) fr v
특정 지역의 모든 변수 출력 (매개변수 제외)
(lldb) frame variable --no-args
(lldb) fr v -a
특정 지역 변수 출력
(lldb) frame variable [변수명]
(lldb) fr v [변수명]
hex로 내용 출력
(lldb) frame variable --format x [변수명]
(lldb) fr v -f x bar
전역 변수 검사 (static, global)
전부 출력
(lldb) target variable
(lldb) ta v
특정 변수 출력
(lldb) target variable [변수명]
(lldb) ta v [변수명]
스레드 상태 검사
- Thread List
- 현재 스레드 목록
(lldb) thread list
Backtrace
스레드의 stack backtrace를 보여준다.
- stack backtrace : 스택추적으로 프로그램 실행 중 특정 시점에서의 스택 프레임에 대한 리포트
Backtrace
현재 스레드의 stack backtrace
(lldb) thread backtrace
(lldb) bt
모든 스레드의 stack backtrace
(lldb) thread backtrace all
(lldb) bt all
현재 스레드에서 현재 선택된 frame의 정보 출력
(lldb) frame info
(lldb) fr info
반응형
'Tip and Error > C' 카테고리의 다른 글
lldb Tips (0) | 2021.03.28 |
---|---|
[Error] multiple definition of '...' (0) | 2021.02.18 |
[Error] control reaches end of non-void function (0) | 2021.02.17 |
[Error] *** stack smashing detected ***: terminated Aborted (0) | 2021.02.08 |
포인터 (0) | 2020.08.27 |
공지사항
최근에 올라온 글