ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • GDB로 STL 디버깅하기
    개발하면서/etc 2011. 9. 7. 00:39
    반응형

    알고리즘문제를 풀면서 C++를 조금씩 조금씩 하고있습니다.

    데이타 저장하고 빼내고 하는 아주 단순한 수준으로만 사용하고 있는데,  이마저도 어버버 할때가 많네요;;

     

    C로 개발하면 GDB로 디버깅 할때 큰 불편 없이 진행할수 있는데 C++로 하니까  불편한게 있습니다.

    바로 STL자료구조에 저장한 데이타를 보고 싶을때인데요, 예제 코드는 다음과 같습니다.

    //vector::push_back
    #include 
    #include 
    
    int main ()
    {
      std::vector myvector;
      int myint;
    
      std::cout << "Please enter some integers (enter 0 to end):\n";
    
      do {
        std::cin >> myint;
        myvector.push_back (myint);
      } while (myint);
    
      std::cout << "myvector stores " << int(myvector.size()) << " numbers.\n";
      
      return 0;
    }

    아래는 GDB로 vector 출력한 화면입니다.

     

     

    값을 보고 싶은데 주소값만 써있고......검색을 해보니 역시 만든게 있네요

    http://lumiera.org/documentation/technical/howto/DebugGdbPretty.html

    http://sourceware.org/gdb/wiki/STLSupport

     

    사용법은 간단합니다.

    원하는 폴더로 이동해서 checkout 받은 후,

     

    svn checkout svn://gcc.gnu.org/svn/gcc/trunk/libstdc++-v3/python stlPrettyPrinter

    ~/.gdbinit을 생성합니다.

     

    # .gdbinit : GDB Config file
    #
    # 3/2010 - Ichthyo: add python pretty printers for STL
    
    python
    import sys
    sys.path.insert(0, 'stlPrettyPrinter 가 설치된 경로')
    from libstdcxx.v6.printers import register_libstdcxx_printers
    register_libstdcxx_printers (None)
    end
    

     

    짜잔~!!

     

    반응형

    댓글

Designed by Tistory.