티스토리 뷰

Tip and Error/C

lldb (Debugger)

geonwoopaeng@gmail.com 2021. 2. 23. 23:42
  • lldb (Debugger)

    • c 코드를 검사하는 도구

Debugger

  • 코드를 검사할 수 있는 도구

Debugging

  • 코드에서 버그를 제거하는 것

lldb 사용하기 위해 사용하는 옵션 + 유용옵션

gcc

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
공지사항
최근에 올라온 글