본문 바로가기

반응형

도구의발견

(67)
eclipse 에서 stl에 있는 내용 보기(How can I inspect the contents of STL containers?) 이클립스 CDT 디버거를 통해 C++ STL 컨테이너의 내용을 보면 한눈에 봐서는 알 수 없는 난해한 구조와 값들로 가득차 있다. 하지만 pretty-printing을 통해 std::map, std::list, std::vector 등의 컨테이너 안에 있는 내용을 보다 가독성이 높은 형태로 볼 수 있다. 본 포스팅은 http://wiki.eclipse.org/CDT/User/FAQ#How_can_I_inspect_the_contents_of_STL_containers.3F 에서 제공하고 있는 내용을 한글로 간단하게 번역하고 적용하면서 겪었던 몇몇 참고 사항을 추가했다. 보다 정확한 정보를 원하시는 분은 위 링크를 직접 확인해 보시는 것도 좋은 방법이다. Pretty-printing 요구사항 : - GDB..
중앙 집중형 deploy tool - "Fabric" 만일 현재 사용하고 계신 바이너리 & 설정 deploy tool이 없다면 'Fabric(http://docs.fabfile.org/en/1.7/)' 이라는 녀석을 한번 살펴 보실것을 권해 드립니다. What is "Fabric"? Fabric is a Python (2.5 or higher) library and command-line tool for streamlining the use of SSH for application deployment or systems administration tasks. - http://docs.fabfile.org/en/1.7/ 간단하게 어플리케이션 배포나 시스템 관리를 위해 사용되는 툴이랍니다. 뭔 말인가 싶어 다른 검색을 좀더 해봅니다. You can use Fa..
gdb - breakpoint [breakpoint 설정](gdb) break 현재줄 breakpoint 설정(gdb) break 22 22라인에 breakpoint 설정(gdb) break func_name func라는 이름의 함수에 breakpoint 설정(gdb) break class_name::func_name class_name 이라는 클래스 func_name 멤버 함수에 breakpoint 설정(gdb) break main.cpp:main main.cpp 파일의 main 함수에 breakpoint 설정(gdb) break main.cpp:10 main.cpp 파일의 10번째 라인에 breakpoint 설정 [regular expression breakpoint 설정](gdb) rbreak fu* fu*를 만족하는 모든 함수..
Visual Studio 2010에서 std::vector<std::string>::insert 메모리 릭 inserting in a std::vector of std::string causes memory leak 위와 같은 보고가 있었군요. 요약을 하자면 아래 코드를 실행 하면 메모리 릭이 발생한다는 것. #include "stdafx.h" #include #include int _tmain(int argc, _TCHAR* argv[]) { // debug memory leaks _CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF ); { std::vector vec; vec.reserve(3); vec.push_back("1"); vec.insert(vec.begin(), 2, "2"); } return 0; } VS 2010 SP1에서 패치 되..
Eclipse build errors - java.lang.object cannot be resolved 집에서 작업하던 이클립스 프로젝트를 회사에 가지고와서 다시 작업하려하니 제목과 같은 에러 메시지를 띄우면서 빌드가 되지 않는다. 원인을 찾아 보니 라이브러리 import가 제대로 안되었단다. 아마도 집환경이랑 회사 환경이랑 뭔가가 달라서 import하는데 문제가 있었는 가보다. 찾아 보니 이클립스 버그라는데..임시 방편으로 JRE System Library 를 프로젝트에서 제거했다가 다시 추가하는 방법을 사용하란다. 쩝..그런데 나의 경우는 이클립스 버그가 아니라 그냥 설정이 잘 못 된것이었다. 아마도 환경이 바뀌면서 여기에도 영향이 있었던 듯 하다.. 원문 : http://dev-answers.blogspot.com/2009/06/eclipse-build-errors-javalangobject.html..
Doxygen 소개 Introduce 요즘 들어 기존 프로젝트에 대한 문서화 작업이 한창입니다. 그런데 개발자라는 종족 특성이 원래 그런 것인지는 모르겠지만, 코드를 짜는데 시간을 할애하는 데는 후하지만 문서를 작성하는데 시간을 할애 하는 것에는 상당히 인색하지요. 그래서 이런 작업(클래스 다이어그램을 그리고, 인터페이스에 대한 설명을 하는 등의..)을 보다 쉽게, 귀찮지 않게 할 수 없을까 라는 생각을 저 이전에 많은 천재 분들이 하셨고, ‘Doxygen’이라는 프로그램을 만드사, 세상에 무료로 공개하셨습니다. Doxygen.., 다들 이름은 한번은 들어 보셨으리라 생각합니다. 아니면 한번즈음 사용해 보셨을지도 모르겠구요. 하지만 정작 지금 당장 우리팀에서는 사용을 하고 있지 않더군요. 상당히 귀찮은 현실입니다. 라이브러..
Conditional Break point with string(char*) - 특정 문자열일 경우 브레이크 포인트 활성화 하기 이전 포스팅([도구의발견] - Break point)에서 Visual Studio 디버거의 브레이크 포인트를 사용하는 방법에 대해서 알아 보았다. 그 중 브레이크 포인트에 조건을 걸어 주는 방법(Conditional breakpoint)에 대해서도 알아 보았는데, 오늘은 conditional breakpoint의 한계와 우회방법(?)에 대해서 알아보겠다. [도구의발견] - Break point 의 내용 대로 하는 경우, 정수 값, 문자 값에 대해서는 조건문이 정상동작하지만, 문자열(char*, std::string) 같은 경우 전~혀 제대로 동작하지 않는다. 정확한 이유는 잘 모르겠지만, 그냥 나의 생각으로는 포인터 값을 주는 경우, 해당 포인터가 가리키고 있는 문자열을 비교하는 것이 아니라 포인터 자체..
flex에서 input buffer 변경하기 일반적으로 우리가 알고 있는 flex는 파일로 부터 스캔 내용을 읽는다. flex는 기본 stdin으로 설정되어 있는 yyin이라는 전역 파일 포인터 변수를 제공하고 있으며, 우리의 필요에 따라 yyin에 다른 파일 포인터를 맵핑함으로써 사용자가 지정하는 파일로 부터 입력을 받을 수 있다. 하지만 프로그램 실행시 넘겨지는 실행 파라메터나 문자열의 경우 파일이 아닌 메모리 상에 위치하고 있는 바이트 버퍼이므로, 이런 경우에는 yyin 같은 파일 포인터를 이용하여 스캔하는 것이 불가능하다. 이런 경우를 위해 flex에서는 입력 스트림(버퍼)을 변경할 수 있는 인터페이스를 제공한다. — Function: void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer ) 위 함..
SQL 쿼리 프로파일링 심심 풀이로 쿼리를 '발'로 짜다 보니 이중 삼중의 조인쿼리와 서브쿼리가 한데 어우러진 아주 복잡 미묘한 쿼리를 만들게 되었습니다. 암튼 중요한 것은 바롤 짠 쿼리가 아니라 이 쿼리가 과연 정상적인 성능을 낼 수 있을까 하는 의문이 들더군요. MySQL을 대상으로 만들긴 했지만, MySQL에서 사실 쿼리가 어떤 순서로 실행 되는지도 모르고(쿼리 계획 이라고 하는 것 같던데..) 내부 구조에도 아는 바가 없어 고민하며 프로파일링 툴을 찾다가 몇 가지 재미있는 링크들을 찾아 간만에 포스팅을 하나 올립니다. 일단 explain 이라는 쿼리 플랜을 보여주는 명령어가 있더군요. SQL 표준이 아닌지라, MySQL에서는 select 절만 지원한다고 하는데, 오라클이나 좀 빵빵한 DB들은 explain을 update..
vi 환경 설정 옵션 .vimrc 파일에 작성하면 vi를 실행 시킬때 마다 자동적으로 설정이 적용 된다. 설 정 옵 션 단축 옵션 설 명 :set all 모든 옵션 출력 number nu 각 라인에 번호를 붙여 출력 nonumber nonu 각 라인의 번호를 출력 하지 않음 warn 파일을 저장하지 않고 종료할 때 경고 메시지 출력 wrapmargin wm=n 파일의 오른쪽 여백을 n만큼 지정 ignorecase ic 검색 및 치환을 할 때 대소문자를 구분하지 않음 noignorecase noic 검색 및 치환을 할 때 대소문자 구분 errorbell eb vi 편집기 사용시 에러가 발생하면 비프음 발생 visualbell 키를 잘못 눌렀을 때 비프음 대신 깜빡이게 함 autoindent ai 자동 들여 쓰기 noautoin..

반응형