개발하면서/etc

GDB로 STL 디버깅하기

오산돌구 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

 

짜잔~!!

 

반응형