2013. 4. 4. 16:30
메모리 출력(memory dumper, memory print) 공유
2013. 4. 4. 16:30 in 프로그래밍/Let's Share it
메모리를 출력하는 코드를 공유합니다.
디버깅시 사용하면 좋겠죠?
와 같이 호출하면 다음과 같이 메모리가 출력됩니다.
DUMP_MEMORY 함수는 다음과 같습니다.
디버깅시 사용하면 좋겠죠?
int _tmain(int argc, _TCHAR* argv[])
{
int i = 0;
char ppp[1000] = {0,};
for (i=0; i<1000; i++)
{
ppp[i] = i%255;
}
DUMP_MEMORY(ppp, 50);
return 0;
} |
Addr = 0x19f6e8 [00000] 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ................ [00010] 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F ................ [00020] 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F !"#$%&'()*+,-./ [00030] 30 31 01 |
VOID DUMP_MEMORY(IN char* p, IN INT nSize)
{
INT i = 0;
INT j = 0;
INT t = 0;
INT l = 0;
CHAR szLine[17] = {0,};
if (NULL == p)
{
return;
}
printf("Addr = 0x%x\r\n", p);
for (i=0; i<(nSize + 15) / 16; i++)
{
t = i * 16;
if (t > nSize)
{
t = nSize;
}
fprintf(stdout, "[%.5X] ", i*16);
l = 0;
for (j=i*16; j<(i+1)*16; j++)
{
if (j>=nSize)
{
fprintf(stdout, " ");
szLine[l] = ' ';
}
else
{
fprintf(stdout, "%0.2X ", (unsigned char)p[j]);
if ((32 <= p[j]) && (p[j] <= 127))
{
szLine[l] = p[j];
}
else
{
szLine[l] = '.';
}
}
l++;
}
fprintf(stdout, " %s\r\n", szLine);
}
} |
'프로그래밍 > Let's Share it' 카테고리의 다른 글
data serialize (데이터 직렬화) 공유 (0) | 2013.08.05 |
---|---|
mongoose와 visual studio c++를 가지고 web application 만들기 (2) | 2013.07.24 |
sqlite의 stmt를 재활용(sqlite3_reset)하여 성능 향상 시키기 (sqlite3 query, insert 예제) (0) | 2013.02.19 |
SQLite 암호화(encrypt) 지원하기 (SQLITE_HAS_CODEC) (30) | 2012.06.20 |
간단하게 SHA256(sha2) 구하기 (1) | 2012.05.25 |