我想转储内存使用memcpy。 我想要十六进制转储存储器范围0x400b5000~0x400fd000
我从“cat / proc / [pid] / maps”
获得了这个记忆范围但它发生了这样的错误,
SIGSEGV (signal SIGSEGV: invalid address (fault address: 0x11)) `
我的代码就像这样。
void dumpCode( char* start, char* end, char* subject )
{
FILE* fp;
char fileName[100];
void* s = (void*)0x400b5000;
void* e = (void*)0x400fd000;
char buf[4];
sprintf( fileName, "/storage/emulated/0/test/%s-%s.txt", start,end );
if ((fp = fopen( fileName, "w" )) == NULL)
printf("Error: Could not open '%s'\n", fileName);
while( s <= e ){
memcpy( buf, s, sizeof(int) );
fwrite( buf, sizeof(int), 1, fp );
s++;
}
fclose(fp);
}
如何转储内存范围?
有人可以在我的情况下建议解决方案吗?或者一些适当的文件..?
感谢您阅读我的问题!