-
LLDB😍]Debugging😍 C/C++ with LLDB 명령어총정리~😍Tutorial&LLDB 홈페이지코딩Coding/Rust_Debugger_heap_memory_check 2022. 2. 1. 16:51728x90
Pdf정리 된거 최고!!
malloc_info --type [16진수메모리 주소]ex)0x100006290(lldb) mem read 0x100006290 0x100006290: 01 7d 40 93 00 00 00 90 00 90 06 91 34 f5 ff 97 .}@.........4... 0x1000062a0: fd 7b c1 a8 c0 03 5f d6 ff 43 02 d1 e0 1b 00 f9 .{...._..C......
21분30초부터
LLDB에서 파이썬 쓰는 법 나옴.
처음에 이론 좀 나오다가 타이핑 해주기 시작함
https://www.youtube.com/watch?v=gT_YyMlIrdA
https://lldb.llvm.org/use/map.html
Debugging C/C++ with LLDB Tutorial
https://www.youtube.com/watch?v=2GV0K9Y2MKA
다른 영상
https://www.youtube.com/watch?v=3BkEOvI36Ds
방콕 Dev. 26분 30초 부터 GDB영상이라 명령어 잘 확인해서 해야함
내가 하는건 LLDB임
https://www.youtube.com/watch?v=GVCR8b_33zo&t=1723s
fsanitize=address
31분 56초
LLDB로 주소 heap/stack 보는 컴파일 C/C++
https://www.youtube.com/watch?v=lFew5gIF-Ro
Xcode 설치하면 자동으로 됨.
LLDB 자동으로 설치 되서 그냥 치면 됨.
zsh 에서 bash치면 bash 들어가짐.
GDBC/C++ 컴파일 할때 heap/stack인지 주소나오게 컴파일하기 clang -g -fsanitize=address lldb_exmple3.c -g -fsanitize=address
이거 죽인다. ㅋㅋㅋcargo build --release release[optimized] - 이렇게 됨 cargo build dev[unoptimized + debuginfo] 이렇게 표시되는거 확인 debug폴더로 들어가기 실행파일 실행하기
bash창에서
lldb atest실행 파일LLDB로 열어주기 b main Breakpoint 1: 2 locations.
브레이크 포인트 나옴run
r라인마다 메모리 주소와 변수 이동된거 자세히 나옴
r해도 run처럼 되는 듯n 다음 줄로 넘어감 c continue register read 레지스터 읽기 kill 지금 보고 있는 코드 내용 종료 file atest
하면 cargo run처럼 결과 볼 수 있음cargo run처럼 실행됨 Break Point설정하기 br list 현재 Break Point를 확인함 q
or
quitLLDB종료!exit
LLDB Debugger
https://youtu.be/v_C1cvo1biI
위에 동영상 한글 설명 -한국사람이 쓴 글
https://80000coding.oopy.io/fad9b8da-d24c-4e17-97c7-4663f42b7968
LLDB 명령어 검정색 배경화면으로 이쁘게 다시 정리!----gcc -옵션 붙혀서 컴파일 gcc -g file.c //Learn the lldb debugger basics in 11 minutes | 2021 (Also works on M1 Apple Silicon) // 10분30초 clang++ -g -std=c++17 seg.cpp -o prog c++ -g demo.cpp clang++ -g demo.cpp // lldb로 stack/heap을 자세히 볼 수 있는 C/C++컴파일러 최고!! clang -g -fsanitize=address lldb_exmple3.c ------------------------- -----// vscode에서 새로운 터미널 창 띄우기 // Shift + cmd + p // 명령팔렛트 // Terminal:Create New Terminal in Editor Area // 코드창처럼 bash입력할 수 있게 공간 만들어줌 // Rust는 cargo build -release // release[optimized]-이렇게 됨 cargo build // dev[unoptimized + debuginfo] 이렇게 바뀜 cd debug // 디버그 폴더로 들어감 // zsh창이라면 bash창으로 바꿔줌 // 실행파일이 atest이라면 lldb atest // 브레이크 포인트 걸기 b main // 함수 이름 // 이렇게 나옴BreakPoint 1 : 2locations b atest:50 // 파일 이름 : 줄 // 이경우 , atest 파일의 50번째 줄 부터 한 줄 씩 검사 r // r 또는 run 으로 실행 n // 한 줄 씩 step over s // 함수 안으로 step in bt // backtrace quit q //lldb 종료 gui //그래픽 화면이라 보기는 편함.. 그래도 명령어로 연습하자!!!
register read 사용법
$ lldb generic001 (lldb) target create "generic001" Current executable set to '/Users/globalyoung/Documents/Project/Github/rust_project/rust_polyglot/Rust_Lang/generic001/target/debug/generic001' (arm64). (lldb) r Process 4376 launched: '/Users/globalyoung/Documents/Project/Github/rust_project/rust_polyglot/Rust_Lang/generic001/target/debug/generic001' (arm64) [(-10, -1000), (-9, -729), (-8, -512), (-7, -343), (-6, -216), (-5, -125), (-4, -64), (-3, -27), (-2, -8), (-1, -1), (0, 0), (1, 1), (2, 8), (3, 27), (4, 64), (5, 125), (6, 216), (7, 343), (8, 512), (9, 729)] Process 4376 exited with status = 0 (0x00000000) (lldb) b main Breakpoint 1: 2 locations. (lldb) list 2 2 3 fn y_xxx<T>(x: T) -> T 4 where 5 T: Mul<Output = T> + Copy, 6 { 7 x * x * x 8 } 9 10 fn main() { 11 let my_vec = (-10..10).map(|x| (x, y_xxx(x))).collect::<Vec<_>>(); (lldb) r Process 4402 launched: '/Users/globalyoung/Documents/Project/Github/rust_project/rust_polyglot/Rust_Lang/generic001/target/debug/generic001' (arm64) Process 4402 stopped * thread #1, queue = 'com.apple.main-thread', stop reason = breakpoint 1.2 frame #0: 0x0000000100008af8 generic001`main generic001`main: -> 0x100008af8 <+0>: stp x29, x30, [sp, #-0x10]! 0x100008afc <+4>: mov x29, sp 0x100008b00 <+8>: mov x2, x1 0x100008b04 <+12>: mov x8, x0 Target 0: (generic001) stopped. (lldb) register read General Purpose Registers: x0 = 0x0000000000000001 x1 = 0x000000016fdff188 x2 = 0x000000016fdff198 x3 = 0x000000016fdff348 x4 = 0x0000000000000000 x5 = 0x0000000000000000 x6 = 0x0000000000000000 x7 = 0x0000000000000000 x8 = 0x00000001000e4070 dyld`dyld4::sConfigBuffer x9 = 0x0000000000000002 x10 = 0x0000000000000000 x11 = 0x0000000000000002 x12 = 0x0000000000000002 x13 = 0x0000000000000000 x14 = 0x0000000000000140 x15 = 0x0000000000000000 x16 = 0x000000030019b088 x17 = 0x6ae100016fdfe3f0 x18 = 0x0000000000000000 x19 = 0x0000000100138060 x20 = 0x0000000100008af8 generic001`main x21 = 0x00000001000e4070 dyld`dyld4::sConfigBuffer x22 = 0x0000000000000000 x23 = 0x0000000000000000 x24 = 0x0000000000000000 x25 = 0x0000000000000000 x26 = 0x0000000000000000 x27 = 0x0000000000000000 x28 = 0x0000000000000000 fp = 0x000000016fdff160 lr = 0x000000010008908c dyld`start + 520 sp = 0x000000016fdff020 pc = 0x0000000100008af8 generic001`main cpsr = 0x60001000 (lldb) (lldb) gui (lldb) exit Quitting LLDB will kill one or more processes. Do you really want to proceed: [Y/n] y
내가 공부하려고 만든 영상
LLDB는 13분 35초부터
한글러스트Rust강의_040⭐️Rust_Generic기초&LLDB_Debugging map, collect #rust #generics #debugging #doomemacs
https://youtu.be/M0ucnOSMik4
한국사람이 쓴 다른글 GDB로 정리한 글이라 LLDB명령어가 달라서 잘 봐야함!!
https://dining-developer.tistory.com/13
더 자세히 정리
https://gwpaeng.tistory.com/m/274
github - google/sanitizers: AddressSanitize
https://github.com/google/sanitizers/wiki
Debugging with LLVM A quick introduction to LLDB and LLVM sanitizers
https://www.youtube.com/watch?v=lFew5gIF-Ro
내가 공부하려고 만든 영상
LLDB는 13분 35초부터
한글러스트Rust강의_040⭐️Rust_Generic기초&LLDB_Debugging map, collect #rust #generics #debugging #doomemacs
https://youtu.be/M0ucnOSMik4반응형'코딩Coding > Rust_Debugger_heap_memory_check' 카테고리의 다른 글
러스트 앞으로 버젼에 나올 inline assembly__기대된다. 빨리 업데이트 되라!!!!__디버그에 많이 도움될듯!!!!Rust_Debug (0) 2022.02.14 Rust_디버그 GDP로하는거 연구필요함. ㅠㅠ (0) 2022.02.14 Rust]debug macro. (0) 2022.02.14 valgrind를 이용한 디버깅 (Linux Debugging (0) 2022.02.14 Debugging - GDB Tutorial-명령어 잘 정리됨-Chris Bourke (0) 2022.02.01 GDB - 간단한 명령어/사용법/단축어 정리(cheat sheet) (0) 2022.02.01 Rust Programming- GDB 메모리주소 보기-macro Expand보는 법 나옴 gdb26분30초 (0) 2022.01.31 Rust)45,000+ lines of Rust code later: An update on the Record & Debug Tool (rd) (0) 2020.12.29