push_swap, so_long 과제에서 고생했던 메모리 누수 체크와 디버깅!
앞으로 많이 활용될 것 같으니 따로 정리해 놓기
시스템 종료 시 메모리 누수 확인
// main문 추가
system("leaks 시스템명");
void fn(void)
{
system("leaks so_long");
}
atexit(fn);
- 이건 평가하다 알려주고 가신거..!
// system("leaks --list [program name]") -> leaks function
// export MallocStackLogging=1
시스템 실행 시 메모리 누수 확인
# leakcheck.sh 작성해서 사용하면 편함!
while [ true ]
do
leaks --list so_long
sleep 1
done
segmentation fault 포인트 확인
gcc -g3 -fsanitize=address 파일명(ex. *.c)
-g 옵션 : 디버깅 실행파일 생성 옵션? 3을 붙이는 이유는 정보가 더 많이 나와서
-fsanitize=address : 자동완성 되니 일부 문자만 입력후 tab

#5 → #0 까지 순차적으로 확인하며 어느 부분에서 오류가 나는지 확인!!
변수값 확인하며 하나씩 실행하는 법 (vscode)
1) Debug C/C++ File 오른쪽 상단 번호 클릭
| launch | 실행 전에 Debugger 모드에서 App, Process에서 앱을 시작하는 방법 |
| attach | 이미 실행중인 App, Process에 연결하는 방법 |
- tasks.json
{
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: gcc build active file",
// 실행하게 되는 명령어
"command": "/usr/bin/gcc",
// 명령어 인자
"args": [
"-fdiagnostics-color=always",
"-g",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "Task generated by Debugger."
}
],
"version": "2.0.0"
}
- launch.json
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: <https://go.microsoft.com/fwlink/?linkid=830387>
"version": "0.2.0",
"configurations": [
{
"name": "(lldb) Launch",
//
"type": "cppdbg",
"request": "launch",
// launch 하는 대상 프로그램
"program": "${workspaceFolder}/a.out",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": false,
"MIMode": "lldb"
}
]
}
https://jaeseokim.dev/C/C-vscode-debugger-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0/
[C] vscode debugger 사용하기!
intro 이전부터 42seoul의 프로젝트를 진행하면서 vscode debugger 를 사용하는 일이 많아지면서 한번 간단하게 예시를 이용하여 정리를 해보았다! vscode debugger! vscode에서는 다양한 언어에 대하여 디버
jaeseokim.dev
2) RUN AND DEBUG tab 클릭 → (lldb) Launch 실행 (왼쪽 상단)
🚨 실행이 되지 않을때 -g3 옵션을 사용해서 컴파일을 해놓기!
- gcc -g3 *.c
- 실행시 컴파일이 함께 되는데 뭔가 오류가 생기는 것 같음,,
3) break 포인트 선택후 디버깅 실행

'42Seoul > C' 카테고리의 다른 글
| [42Seoul] so_long - minilibx_opengl 정적 라이브러리 활용, 2D 게임 만들기 (0) | 2023.09.15 |
|---|---|
| [42Seoul] push_swap - 양방향 연결리스트, 데큐, 모래시계 알고리즘 (0) | 2023.09.14 |
| [42Seoul] minitalk - 시그널 활용, 클라이언트&서버 통신 프로그램 생성 (0) | 2023.09.13 |
| [42Seoul] Born2beroot - 가상머신(virtual machine) (0) | 2023.09.12 |
| [42Seoul] ft_printf - 스택(stack)과 힙(heap), 함수오버로딩, 가변인자 개념 이해 (0) | 2023.09.11 |






