Backtrace on C language program

디버깅 과정에선 현재 어떤 코드가 어떤 함수를 거쳐 수행됐는지를 통한 컨텍스트 파악이 중요합니다. Java, Python, Go 등 대부분의 언어가 이를 위해 콜스택을 뽑을 수 있는 기능을 제공하죠. C 언어의 경우 gdb 등을 사용하면 쉽게 이를 볼 수 있지만 경우에 따라선 gdb 를 포기하고 printf() 등에만 의존해야 하기도 합니다. 이를 위한 기능이 c 라이브러리에도 있습니다, backtrace() 함수입니다. man 에도 이에 대한 설명이 있습니다만, 여기서도 간단히 소개해 봅니다. Example Source Code 예제로 설명하는게 가장 쉽죠....

April 9, 2019 · 2 min · 247 words · Me

Unit test for the Linux kernel using Kunit

업데이트 (2020-01-01): KUnit 은 v5.5 머지 윈도우 사이 메인라인에 머지되었습니다. 이 포스트 작성 시점 이후로 많은 KUnit 에도 많은 변화가 있었고, 따라서 아래 내용 중 일부, 특히 테스트 셋업과 수행 부분은 좀 많이 달라졌습니다. 해당 내용을 위해선 공식 문서 를 참고하시길 권장합니다. 또한, 최신 버전은 파이썬 버전 종속성이 생겨서 우분투 16.04 위에서는 문제를 겪으실 수 있습니다. 최신버전의 파이썬을 쓰시거나 그냥 우분투 18.04 를 사용하시길 권장합니다. 지난 2월 말에 FAST'19 학회를 다녀왔는데요, Ted Tso 도 왔더군요....

March 20, 2019 · 3 min · 546 words · Me

Gitlab docker install

연구실 내부 사용을 위한 Gitlab 을 Docker 를 사용해서 구축하고 사용하고 있습니다만, 하도 예전이라 Gitlab official docker image 가 아니었고, docker 버전도 2.x 대라서 최신 버전으로 바로 업그레이드가 불가능하군요. 지금은 gitlab 에서 자체적으로 정식 docker 이미지를 제공합니다. 이 포스트에서는 Ubuntu 18.04 서버 위에 gitlab 정식 docker 이미지를 사용해 설치하는 방법을 기록합니다. Docker 설치 먼저 Docker 를 설치해야죠. 문서[1]를 참고해서 설치를 진행해 봅니다. 먼저 apt 업데이트 후 종속 패키지들을 깔아줍니다: sudo apt update sudo apt install apt-transport-https ca-certificates curl software-properties-common 이제 최신 docker 를 깔기 위해 docker repository 를 apt 에 추가해 주고요:...

March 19, 2019 · 4 min · 649 words · Me

I will have a talk at the FAST'19

FAST'19 Work-in-progress 세션 에서 현재 진행중인 연구에 대해 발표하게 되었습니다. 발표 제목은 “Automated Data Access Pattern Hint Instrumentation for System Performance and Durability of Swap Storage” 입니다.

February 2, 2019 · 1 min · 27 words · Me

Perf symbol problem on Linux 4.19

4.19 커널에서 오랫만에 perf 를 다시 빌드하고 써보려고 하니, perf report 가 아래와 같이 제대로 된 symbol name 을 찾질 못합니다. $ sudo perf record -g ls arch builtin-ftrace.c builtin-report.c Documentation perf.data.old bench builtin.h builtin-sched.c examples perf.h Build builtin-help.c builtin-script.c include perf-read-vdso.c builtin-annotate.c builtin-inject.c builtin-stat.c jvmti perf-sys.h builtin-bench.c builtin-kallsyms.c builtin-timechart.c Makefile perf-with-kcore.sh builtin-buildid-cache.c builtin-kmem.c builtin-top.c Makefile.config pmu-events builtin-buildid-list.c builtin-kvm.c builtin-trace.c Makefile.perf python builtin-c2c.c builtin-list.c builtin-version.c MANIFEST scripts builtin-config.c builtin-lock.c check-headers.sh perf-archive....

December 21, 2018 · 2 min · 227 words · Me