버그 잡이 4

gdb 디버깅) 특정 메모리 값이 덥어 쒸어졌다. 어떻게 확인 할것인가?

Q1) 특정 메모리 값이 덥어 쒸어졌다. 어떻게 확인 할것인가???0. 반복문 안에서 발생하느가? - 반복문의 횟수가 세팅하려는 배열보다 더 많이 도는가?? 1. 필요기술 1) gdb 사용기술 (1) 메모리 상태 검사 (x) a. x/x b. x/[범위][출력 형식][범위의 단위] : 메모리의 특정 범위의 값들을 확인할 수 있다. 가. 범위 : 출력할 갯수 나. 출력 형식 : - t(2진수)- o(8진수) - d(부호 있는 10진수)- u(부호없는 10진수)- x(hex)- c(최초 1바티으 값을 문자형으로 출력)- f(부동소수점 형시으로 출력)- a(가장 가까운 심볼의 오프셋을 출려)- s(문자열로 출력)- i(어셈블리로 출력) 다. 범위 단위 : - b(1 byte 단위(byte)) - h(2 byt..

메모리 alignment

요약 : 구조체의 메모리 크기는 구조체 변수의 최대 자료형의 크기를 기준으로정렬된다 http://ikpil.com/359 자료 구조 순서에 따라 바뀌는 구조체 메모리 크기다음 블로그에 설명 잘되어 있음 요약 : 메모리 할당후 빈공간에 연속적으로 메모리 할당이 가능하냐 않하냐에 따라 메모리 할당 크기가 변하게 된다. 상세 내용은 다음 링크를 참조 구조체 메모리 저장방식 #pragma pack

gdb에서 메모리 덤프

gdb에서 메모리 덤프 뜨기 [메모리 덤프]dump memory ./dump_file 0x1003033 0x2040204명령어 설명: - 명령어 : dump - 매개 변수: memory - 결과 파일 : ./dump_file - 덤프 시작 주소 : 0x1003033 - 덤프 끝 주소 : 0x2040204 결과 : 현재 디렉토리에 ./dump_file이란 파일로 0x1003033을 시작으로 0x2040204 까지의 메모리 내용디 덤프 떠진다. 관련되서 유용한 정보 [프로세스와 맵핑된 메모리 정보]/proc/pid/maps[root@localhost]# cat /proc/`pidof crond`/maps7fb0b3d33000-7fb0b3d3e000 r-xp 00000000 08:01 38102 /lib64/..

dmesg의 Segfault 분석 방법

dmesg의 Segfault Error 분석 방법$ dmesg foo[1234]: segfault at 2a ip 0000000000400511 sp 00007fffe00a3260 error 4 in foo[400000+1000] These are some hints in dmesg output:foo is the executable name1234 is the process ID2a is the faulty address in hexadecimalthe value after ip is the instruction pointerthe value after sp is the stack pointererror 4 is an error codethe string at the end is the name of ..