어쩌다보니까 정식으로 이 프로젝트의 project maintainer가 되었습니다. 공식 홈페이지에 자리를 얻어서 이제는 구글 프로젝트 호스팅에 꾸몄던 사이트는 사용하지 않게 되었음. 아래 링크를 타고가면 내가 opencores.org 위키에 쓴 간단한 문서를 볼 수 있따능.
GDB 7.0에서 새루 생긴 기능이라구 한다. 프로그램 플로우를 연어처럼 거꾸로 거슬러 올라갈 수 있게 해주는 기능으로 인스트럭션과 인스트럭션 사이의 레지스터 변화와 메모리 변화를 저장해놨다 복구하는 방법으로 플로우를 뒤로 돌릴 수 있다는거 같다.
GDB remote target debugging 위한 remote stub(proxy server)을 만들어 보거나 했으면 알겠지만 GDB가 debugging target을 바라보는 관점은 레지스터와 메모리의 집합이다. 이거의 변화를 잘 저장해놓으면 프로그램 플로우를 뒤로 돌릴 수 있다는 컨셈으로 만들어 진거 같다. 당연히 변화는 어느 정도 한계를 두고 저장하고 당연하게 이 한계량을 조절하거나 업ㅂ셀 수 있다. GDB를 키고 help를 쳐보자.
i386-linux하고 arm64-linux랑 몇가지 이상한 타겟 아키택쳐를 지원하는데....당장은 저 두개만 된다고 생각하면 편할 꺼 같다. i386-mingw, amd64-mingw에서는 안된다. 명령을 쳐보면 '님아 여기선 안되염 뿌우 'ㅅ' ' 라고 나온다능.
이걸 기록하려면 record라는 명령을 치면 되는데 타겟이 돌구 있어야 이거 먹는다. 일단 main 같은데 break를 걸어놓고 record를 치고 시작한다. -g 옵션을 넣고 컴파일 해야 된다.
record라고 친다음 next로 한 라인씩 넘겨본다. reverse-next라고 치면 우왕! 정말 뒤로 간다. 몇가지 명령이 더 있는데 다음과 같다.
reverse-continue - bp나 wp를 만날 때 까지 뒤로 간다.
reverse-step - 소스 라인에서 한 라인 뒤로 간다. 뻥션콜을 만나면 그 뻥선에서 return 위치로 간다.
reverse-stepi - 인스트럭션 단위로 하나 뒤로 간다. jal 따위의 인스트럭션을 만나면 call ra따위의 인스트럭션이 있는데로 간다.
reverse-next - 소스 라인에서 한 라인 뒤로 간다. 뻥션콜을 만나면 그 뻥션도 몽땅 롤백한다.
reverse-nexti - 인스트럭션 단위로 하나 뒤로 간다. jal 따위의 인스트럭션을 만나면 몽땅 뒤로 간다.
reverse-finish - 현재 뻥션이 불리기 바로 직전까지 뒤로 간다.
bp하고 bp 사이를 와따 가따 하면서 디버깅 하거나...생각업ㅂ이 막 next 하다가 디버깅할 시점을 놓쳤을 때 쓸만할꺼 같다능 -_-;;;
MinGW/msys에서 boost를 쓰고 싶어서 결국 빌드를 했다. 시간이 오래 걸릴뿐 방법은 별로 어렵지 않다. 일단 boost의 소스를 받아서 아무데나 압축을 푼다. boost_1_46_1을 기준으로 설명하겠다능.
첫번째로 bjam이란걸 빌드해야 되는데...cmd 창을 뛰우고(꼭 cmd 창을 뛰워야 된다) boost 소스트리의 아래 위치로 이동한다.
cd boost_1_46_1\tools\build\v2\engine\src
저기로 이동한 다음..MinGW gcc의 패스를 등록한다. 패스는 환경마다 조금씩 틀리겠지만 나는 아래처럼 등록했다.
set PATH=C:\MinGW\bin;%PATH%
그 다음 이렇게 입력한다.
build.bat mingw
조금 기다리면 boost_1_46_1\tools\build\v2\engine\src\bin.ntx86 위치에 bjam.exe가 생겨났을 것이다. 이걸 MinGW gcc가 있는 디렉토리에 복사한다. 이제 두번째 단계로 넘어가면 된다.
두번째는 boost 빌드다. bjam을 이용해서 빌드하면 되는다 이것도 역시 cmd.exe를 쉘로 사용한다. (꼭 cmd.exe를 써야된다) 아까 뛰어놨던 cmd창을 종료했다면 다시 켜고 MinGW gcc의 패스를 잡아준다. 첫번째에서 bjam.exe를 gcc와 같은 위치로 복하해놨으니 둘다 실행 시킬 수 있어야 정상이다. 일단 아래처럼 입력해서 간단하게 확인을 해본다.
gcc --version
bjam -h
둘다 잘 실행이 되면 boost 소스트리의 위치로 이동한 다음 아래처럼 입력한다.
bjam toolset=gcc --build-type=complete install
지루할 정도로 오래걸릴태니 켜놓고 외출을 하던지 낮잠을 자고 온다. 성공적으로 빌드가 됐으면 C:\boost 위치에 해더파일과 라이브러리 파일들이 깔려있을태니 여기를 -I, -L 패스로 잡아서 사용하던지 이걸 MinGW include 디렉토리와 lib 디렉토리로 복사하면 된다.
댓글을 달아 주세요
헐 성님! ㄷㅁㅇ 성님! ㅠㅜ
공부자료 생겼네 ㅠㅜ
^^
비밀댓글입니다
보내드렸습니다