DKU-StarLab / leveldb-study

LevelDB Analysis, Backgrounds, Practice and Tuning
https://sslab.dankook.ac.kr/leveldb-wiki/
35 stars 15 forks source link

Ubuntu 환경 db_bench debug 모드 문제 #11

Closed isu-kim closed 2 years ago

isu-kim commented 2 years ago

2주차 강의자료 43페이지에서 나온 db_bench의 debug 모드로 빌드할 때 CMakeList.txt

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} –g –pg")

옵션을 추가한 이후 다음의 명령어로 컴파일시

$ cmake -DCMAKE_BUILD_TYPE=Debug .. && cmake --build .

...

CMake Error at third_party/benchmark/CMakeLists.txt:278 (message):
  Failed to determine the source files for the regular expression backend

-- Configuring incomplete, errors occurred!
See also "/root/aa/leveldb_debu/build/CMakeFiles/CMakeOutput.log".
See also "/root/aa/leveldb_debu/build/CMakeFiles/CMakeError.log".

위와 같이 build 에러가 나오는 경우가 있습니다.

isu-kim commented 2 years ago

해당 문제의 경우 저와 같은 경우 다음과 같이 해서 해결했습니다. 테스트 환경은 개인 서버 2대와 유시환 교수님의 assam.dankook.ac.kr 의 solid 서버 총 3대에서 다음의 내용으로 컴파일 시 debug 빌드가 되는걸 확인했습니다.

(각 개인의 환경에 따라서 결과물이 다를 수 있습니다)

  1. CMakeList.txt
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} –g –pg")

    옵션을 제거합니다. (즉 처음에 git clone으로 받아놓은 레포지토리의 CMakeList.txt를 그대로 사용합니다)

  1. 빌드시 다음의 명령어를 사용합니다.
mkdir -p build && cd build
cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_FLAGS=-pg .. && cmake --build .

만일 빌드를 하며, 빨간글짜 또는 에러 문구가 안나오면 정상 빌드라고 보시면 될것 같습니다.

  1. debug 모드로 빌드가 잘 되었는지 테스트해봅니다. (강의때 배운 uftrace를 써봅시다)
    uftrace ./db_bench --benchmarks="fillseq" --num=1
    • 만일 다음의 화면이 나온다면 안됩니다. -pg 옵션을 빼고 컴파일 하면 나오는 화면입니다.
      uftrace: ./cmds/record.c:1625:check_binary
      ERROR: Can't find 'mcount' symbol in the './db_bench'.
      It seems not to be compiled with -pg or -finstrument-functions flag.
      You can rebuild your program with it or use -P option for dynamic tracing.
    • 만일 다음의 화면이 나오면 된다고 합니다.
      ... 너무 길어서 생략 ...
      ------------------------------------------------
      fillseq      :  195508.000 micros/op;    0.0 MB/s
      # DURATION     TID     FUNCTION
          [2246758] | _GLOBAL__sub_I_leveldb::test::RandomString() {
          [2246758] |   __static_initialization_and_destruction_0() {
      205.266 us [2246758] |     std::ios_base::Init::Init();
      0.343 us [2246758] |     __cxa_atexit();
      208.411 us [2246758] |   } /* __static_initialization_and_destruction_0 */
      209.542 us [2246758] | } /* _GLOBAL__sub_I_leveldb::test::RandomString */
          [2246758] | _GLOBAL__sub_I_main() {
          [2246758] |   __static_initialization_and_destruction_0() {
      0.168 us [2246758] |     std::ios_base::Init::Init();
      0.173 us [2246758] |     __cxa_atexit();
      ... 너무 길어서 생략 ...

해당 이슈의 경우 다음주 화요일 스터디 전에 close 하도록 하겠습니다.