gdb command 활용#1
원글(이글루): 2010-06-11 18:12:15 gdb로 map을 까봤으면 string같은게 파싱이 잘안되어서 이상하게 나올수 있는데, 그냥 무식하게 char* 로한번에 봐보도록 하자.1) 추출한 것을 일단 파일로 몰아 넣고$ cat > kkelem[0].left: $2 = (void *) …
원글(이글루): 2010-06-11 18:12:15 gdb로 map을 까봤으면 string같은게 파싱이 잘안되어서 이상하게 나올수 있는데, 그냥 무식하게 char* 로한번에 봐보도록 하자.1) 추출한 것을 일단 파일로 몰아 넣고$ cat > kkelem[0].left: $2 = (void *) …
원글(이글루): 2010-06-11 18:05:47 gdb에서 define으로 함수처럼 정의해 쓸수있다. 첨부는 STL의 list나 vector등의 값을 따라 갈때 편리하게 하기 위해서 만들어 놓은 것이다. 원본은 plist가 하나의 함수로 되어 있는데, gdb버전이 낮은 경우 argc라는 변수가 없다.그래서 인자 갯수별로 plist1 , plist2 이런식으로 함수 분리하는 작업을 한 파일도 첨부한다. ~/.gdbinit 파일을 첨부파일로 대체하면 된다.개인적으론“set print pretty on” 를 주석처리하는게 한줄에 나오고 더 좋은거 같다. 1) argc수정한 파일 2) 원본파일 테스트$ g++ -g3 a.cpp$ ./a.outNEW=0x89bf008NEW=0x89bf0a8NEW=0x89bf148NEW=0x89bf1e8NEW=0x89bf288NEW=0x89bf328NEW=0x89bf3c8NEW=0x89bf468NEW=0x89bf508NEW=0x89bf5a8MEM: A 0x89bf008 [BABO-0]MEM: B 0x89bf0a8 [BABO-1]MEM: C 0x89bf148 …
원글(이글루): 2010-05-05 12:17:54 http://java.decompiler.free.fr/ 써보니 괜찮은듯.. jd-gui-0.3.2.windows.zip
원글(이글루): 2009-12-29 20:46:11 gcc -fPIC -c file1.c file2.c # -fPIC 옵션은 cc1 컴파일러에게 위치에 관계 없이 수행되는 코드로 컴파일 하라는 옵션임# file1.o file2.o 가 만들어짐 gcc -shared -Wl,-soname,libmy.so.0 -o libmy.so.0.0.0 …
원글(이글루): 2009-12-29 20:44:31 무식하게 손으로 정적 라이브러리를 만들고 싶다면 아래처럼 하는거야.보통은 Makefile에 넣어 두겠지? 전처리file1.c, file2.c 작성, 헤더 파일도 작성 gcc -c file1.c file2.c -> file1.o file2.o가 만들어짐 ar rscv …
원글(이글루): 2009-12-29 20:33:06 보통 -v 형태의 옵션을 처리할때 사용하는 함수 ■ 사용방법#include <unistd.h> int getopt(int argc, char * const argv[], const char *optstring); extern char *optarg;extern int optind, opterr, optopt; …
원글(이글루): 2009-12-29 20:31:14 EX) ###################################PROG = mainREALPROG = putseqsrcdir = ./src CC = gccCCOPT = -O2DEFS =INCLS =LIBS =################################### debug: DEFS = $(DEFS) -DDEBUG CFLAGS = $(CCOPT) $(DEFS) $(INCLS) .c.o: @rm …
원글(이글루): 2009-12-29 20:27:44 va_list 형태로 인자를 여러개 받아 처리하는 함수를 만들수 있지. int DebugText(char *fn, int type, const char *format,…){ char buffer[1000]; int cnt; FILE *fp; va_list arglist; va_start(arglist,format); cnt = vsprintf(buffer, format, arglist); if(type == 0) { fp …