2018/07

    [SOLVE] valgrind: failed to start tool 'memcheck' for platform... ': No such file or directory

    valgrind source를 cross compile 하여 다른 platform에 포팅하려 할 때 발생한 문제입니다. lib, include, bin directory 모두 알맞은 경로에 설치해주고 실행하였을 때 아래와 같은 에러 문구가 나타납니다. $ valgrindvalgrind: failed to start tool 'memcheck' for platform 'arm64-linux': No such file or directory 이 경우 lib 경로 환경변수가 등록되지 않은 상태입니다.lib 설치된 경로를 VALGRIND_LIB 환경변수로 추가해주시면 문제 해결됩니다. $ export VALGRIND_LIB=/path/to/valgrind/lib 또는 .bashrc에 환경변수 추가해주셔도 됩니다.

    [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..

    [TOCTOU] Time of check to time of use 문제

    아래와 같은 코드는 TOCTOU 문제를 야기할 수 있습니다. TOCTOU 문제는 자주 발생할 수 있는 문제인데요, TOCTOU 문제가 무엇인지 어떤 상황에 발생할 수 있는 살펴보겠습니다. TOCTOU는 'Time of check to time of use' 의 약자입니다. 소프트웨어 개발 시 조건과 조건의 결과 사이에서 시스템의 변경을 이용한 Race condition이라고 할 수 있습니다. 특히 어떤 리소스를 사용하기 전에 리소스 상태를 체크하는 로직 사이에서 많이 발생할 수 있습니다. 이해가 잘 안되실 수 있으니 아래 코드를 예시로 말씀드리겠습니다. access() 호출 이후 unlink를 호출합니다. 의도는 access로 파일이 존재한다면 unlink로 파일을 제거하려는 코드인 것 같습니다. 여기서..

    [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 동시 확인하기

    로그를 확인할 때 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"

    [C] #pragma pack( [show] | [push | pop] , n )

    #pragma 매크로 중 pack에 관련된 내용을 정리하려 합니다. 해당 내용은 C언어 프로젝트에서 한 번쯤 살펴볼 수 있는 구문인데요, 어떤걸 의미하는지 정리해보고자 합니다. [구문]#pragma pack( [ show ] | [ push | pop ] [, identifier ] , n ) #pragma pack 은 위와 같은 구문으로 구성되어 있습니다. pack 이란 단어가 무슨 의미인지 아시나요? pack 미국·영국 [pӕk] 1. (여행을 가기 위해) (짐을) 싸다 2. (보관・수송・매매 목적으로 물건을) 포장하다 네이버에서 검색해보니 위와 같은 의미를 가지고 있네요. 그럼 아래 예제를 보고 한번 더 얘기해보죠. 1234567891011121314151617181920212223242526272..

    자주 사용하는 git alias 정리

    ~/.gitconfig에 아래와같이 설정 해 줌으로써 좀 더 편하게 git을 사용할 수 있습니다.자주 사용하는 alias들을 작성해두고 시간이 날 때 마다 추가 해놓을 생각입니다. [alias] logd = log --decorate logAll = log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)%Creset' --abbrev-commit $git logd (git log --decorate) $git logAll (git log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen..

});