Taking baby-developer steps
2022.02.01. gnl & lldb 본문
오늘 목표
- LLDB 사용법 익히기
- 유튜브 강의로 실제 사용하는 법 익히기
- gnlTest 테스터 Mandatory Part통과
- KO 뜨는 케이스 잡기
오늘 한일
- LLDB 사용법 익히기
- 유튜브 강의로 실제 사용하는 법 익히기
->lldb 명령어 중, gui 라는 그래픽 기반 명령어를 알게 됬더니 좀더 한줄 한줄 어떤식으로 프로그램이 돌아가고 있는지 보기가 좋았다. 단 컴파일 후, break point를 잡고 꼭 run을 해준 다음에 gui로 넘어가서 next 명령어를 사용해 한줄씩 보면 된다. 사실 break point를 좀 더 잡아서 s 커맨드로 하면 더 편할거 같긴하다. (next 명령어는 한줄씩 다 보는 거라..!)
해결되지 않은 문제점 :
1. gnlTester에서 "pointer being freed was not allocated"라고 나오는 부분과, 컴파일시 sanitizer address 옵션을 주고 lldb를 실행할 경우 나타나는 "heap-use-after-free"를 해결하기 위해서 메모리를 free하는 부분을 모두 다 살펴보고 할당되지 않은 경우나 해당 포인터가 아무것도 가리키고 있지 않을 때는 free하지 않도록 조치를 취했음에도 해당 부분이 계속 출력되었다. lldb에서 gui로 한줄씩 프로그램이 진행되는 순서로 봤을 때는 할당 및 free에 문제가 없었는데 어디서 잘못되고 있는지 아직 결과 해석이 미숙하다. c표준 라이브러리를 구현해보는 지난번 과제에서 만들었던 함수들은 이번에 사용한게 있었는데, 해당 과제에서 널 프로텍티드하게 함수를 구현할 필요성을 못 느껴서 굳이 프로텍티드된 함수로 구현하지 않았었는데, 한번 그쪽으로도 살펴볼까 하는 생각이 든다.
2. KO 케이스에 대하여. 현재, 읽어들이는 텍스트 파일에 개행 문자('\n')만 있는경우, 개행문자만 여러개 연달아 있는 경우, 혹은 개행문자로 끝나는 경우에(개행문자로 끝나지만 정상적으로 작동하는 케이스도 있다.) KO 케이스가 발생하고 있다. lldb등으로 디버그 해본 결과, 마지막 줄까지 출력 한 후에 해당 파일디스크립터에 대해 gnl함수를 호출하면 아무일도 일어나지 않아야 하는데, 뭔가 이상한 문자열(의도하지 않은)이 반환되고 있다. 아마도 문자열의 널터미네이트에서 문제가 생긴거 같기도 하다.. c 표준 라이브러리 함수들 구현에서 뭔가 잘못된 부분이 존재하는지 의심이 된다.
내일 할일
- strlcat
- strlcpy
- substr
- 위 함수들 검사
'Logs > 학습 log' 카테고리의 다른 글
2022.02.03. gnl 메모리 이중 할당해제, KO 케이스들 (0) | 2022.02.03 |
---|---|
2022.02.02. gnl 메모리 해제, KO 케이스들 (0) | 2022.02.02 |
2022.01.27. gnl (0) | 2022.01.27 |
2022.01.26. gnl과제 하는 중... (0) | 2022.01.26 |
2022.01.25. 학습 log (0) | 2022.01.25 |