how to memorize the order of planets in solar system.
My very educated mother just served us nine pies.
아주 교양있는 우리 어머니께서 방금 우리에게 파이 아홉 개를 주셨다.
Mercury
Venus
Earch
Mars
Jupiter
Saturn
Uranus
Neptune
Pluto
출처
행성이야기 (The Planets)
작가 : 데이바 소벨 (Dava Sobel )
2015년 1월 31일 토요일
2015년 1월 22일 목요일
ddd 를 이용하여 구조체 내에 padding 된 byte 의 쓰레기값 관찰하기.
#include
typedef struct _a
{
char a;
int i;
}PAD;
typedef struct __attribute__((packed)) _b
{
char a;
int i;
}PACK;
int main(int argc, char * argv[] )
{
PAD pad = { 'a', 10 };
PACK pack= { 'b', 20 };
printf( "PAD char : %c\n", pad.a );
printf( "PACK char : %c\n", pack.a );
printf( "size PAD : %d\n", sizeof(PAD ) );
printf( "size PACK : %d\n", sizeof(PACK) );
return 0;
}
위 코드를 이용하여 ddd 를 사용해보자.
(gdb) print pad.a
$9 = 97 'a'
(gdb) print pad
$10 = {a = 97 'a', i = 10}
typedef struct _a
{
char a;
int i;
}PAD;
typedef struct __attribute__((packed)) _b
{
char a;
int i;
}PACK;
int main(int argc, char * argv[] )
{
PAD pad = { 'a', 10 };
PACK pack= { 'b', 20 };
printf( "PAD char : %c\n", pad.a );
printf( "PACK char : %c\n", pack.a );
printf( "size PAD : %d\n", sizeof(PAD ) );
printf( "size PACK : %d\n", sizeof(PACK) );
return 0;
}
위 코드를 이용하여 ddd 를 사용해보자.
(gdb) print pad.a
$9 = 97 'a'
(gdb) print pad
$10 = {a = 97 'a', i = 10}
pad 의 주소를 출력
(gdb) print &pad
$13 = (PAD *) 0xbffff240
pad.a 의 주소를 출력(값도 같이 나온다.)
(gdb) print &pad.a
$14 = 0xbffff240 "a\324\025"
a 는 초기화된 값인데, 그 뒤의 값은 왜 저렇게 나오는지 모르겠다.
a 는 초기화된 값인데, 그 뒤의 값은 왜 저렇게 나오는지 모르겠다.
pad.a 의 주소를 이용하여 word(32bit 컴에서 4 byte) 를 출력
(gdb) x /wx &pad.a
0xbffff240: 0x0015d461
pad.a 의 주소를 이용하여 1 byte 를 출력
(gdb) x /bx &pad.a
0xbffff240: 0x61
( pad.a + 1 ) 주소를 이용하여 1 byte 를 출력
(gdb) x /bx &pad.a + 1
0xbffff241: 0xd4
( pad.a + 2 ) 주소를 이용하여 1 byte 를 출력
(gdb) x /bx &pad.a + 2
0xbffff242: 0x15
( pad.a + 3 ) 주소를 이용하여 1 byte 를 출력
(gdb) x /bx &pad.a + 3
0xbffff243: 0x00
2015년 1월 12일 월요일
ddd 에서 인자주기
http://www.delorie.com/gnu/docs/gdb/gdb_19.html
Specify the arguments to be used the next time your program is run. If
Show the arguments to give your program when it is started.
또는
After you invoke ddd, goto Program->Run and then provide your arguments.
set args
set args
has no arguments, run
executes your program with no arguments. Once you have run your program with arguments, using set args
before the next run
is the only way to run it again without arguments.show args
피드 구독하기:
글 (Atom)