Linux

    [gdb] The GNU Debugger : 3. Stack 정보 분석하기

    스택은 현재 프로세스가 실행 중인 코드가 어디인지 확인할 수 있기에 매우 중요한 정보라고 할 수 있습니다. gdb에서는 종료되지 않은 함수를 하나의 frame이라고 합니다. 각 프레임은 스택에 쌓여있는 함수, 아직 종료되지 않은 함수라고 보시면 됩니다. 각 프레임은 Caller와 Callee의 관계를 구성하게 되죠. 이번 예제는 아래 코드를 사용하겠습니다. #include #include void func4(int a, int b) { printf("sum : %d\n", a + b); } void func3(int a, int b) { return func4(a, b); } void func2(int a, int b) { return func3(a, b); } void func1(int a, int b..

    [valgrind] Memory debugging & profiling tool

    [valgrind] Memory debugging & profiling tool

    Valgrind는 리눅스 실행파일(excutable)을 디버깅하고 프로파일링할 수 있는 툴입니다. 오픈소스이며 C/C++ 로 작성된 프로그램을 디버깅하는데 매우 유용하죠. 간단한 사용법과 몇 가지 기초적인 옵션에 대해 설명드리고자 합니다. 1. 설치$ sudo apt install valgrind$ sudo apt install massif-visualizer 2. 예제 프로그램valgrind를 이용해 프로파일링 하기 전에 예제 프로그램을 하나 작성하였습니다. 코드는 아래와 같습니다. 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455#include #include int t..

    [cloc] 코드의 LOC 계산하기

    가끔 프로젝트의 LOC가 궁금할 때가 있다. IDE의 라인 수를 살펴봐도 되지만, 순수하게 White line이나 주석등은 제외한 코드의 길이만 확인하고자 할 때 cloc 을 사용한다. [설치]$ sudo apt install cloc [실행]Framework란 디렉토리에 포함된 코드를 확인하고자 한다.$ cloc Framework 98 text files. 94 unique files. 17 files ignored.http://cloc.sourceforge.net v 1.60 T=0.18 s (466.8 files/s, 45135.7 lines/s)-------------------------------------------------------------------------------Languag..

    [multitail] 여러 Log 동시 확인하기

    [multitail] 여러 Log 동시 확인하기

    로그를 확인할 때 tail 명령어를 많이 사용합니다. tail 명령어를 이용 시 여러 개의 로그를 동시에 보고싶지만 하나의 터미널 창에서는 하나의 로그만 확인 가능합니다. 이러한 점을 보완한 툴이 multitail입니다. 아래 명령어로 먼저 설치해 줍니다.$ sudo apt install multitail 사용방법은 간단합니다.$ multitail {log file} {log file} 예를 들어,$ multitail /var/log/apache2/access.log /var/log/apach2/error.log 위 명령어를 수행 시 아래와 같은 결과를 얻을 수 있습니다. 감사합니다.

    [date] 시간 확인 및 변경하기

    현재 시간 확인하기$ date2018. 07. 12. (목) 17:18:35 KST 현재 시간 변경하기 (년/월/일/시간)# date +%Y%m%d -s "20180728"# date +%T -s "17:18:00"

    shared memory with semaphore

    앞서 'shared memory with mutex' 에서는 2개 이상의 프로세스에서 공유 메모리를 이용해 데이터를 공유할 때 Lock / Unlock을 위해 mutex를 사용하는 방법에 대해 살펴보았습니다. 이번 글에서는 공유메모리를 이용해 데이터를 공유할 때 여러 프로세스들이 semaphore을 이용해 Lock / Unlock 하는 방법에 대해 알아보겠습니다. 앞서 'shared memory with mutex'를 보신 분들이라면 쉽게 이해 하실 수 있는데요, 코드 중 mutex 관련된 코드 대신 semaphore 코드로 대체해 주는 것 밖에 없습니다. 저는 semaphore을 POSIX Spinlock API들을 사용하였습니다. semaphore는 커널에서 관리해주는 정수로서 0이하의 음수 값으로는..