提交 b371dc59 编写于 作者: B bellard

memsave monitor command


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2288 c046a42c-6fe2-441c-8c8c-71466251a162
上级 2ee4aed8
...@@ -642,6 +642,36 @@ static void do_print(int count, int format, int size, unsigned int valh, unsigne ...@@ -642,6 +642,36 @@ static void do_print(int count, int format, int size, unsigned int valh, unsigne
term_printf("\n"); term_printf("\n");
} }
static void do_memory_save(unsigned int valh, unsigned int vall,
uint32_t size, const char *filename)
{
FILE *f;
target_long addr = GET_TLONG(valh, vall);
uint32_t l;
CPUState *env;
uint8_t buf[1024];
env = mon_get_cpu();
if (!env)
return;
f = fopen(filename, "wb");
if (!f) {
term_printf("could not open '%s'\n", filename);
return;
}
while (size != 0) {
l = sizeof(buf);
if (l > size)
l = size;
cpu_memory_rw_debug(env, addr, buf, l, 0);
fwrite(buf, 1, l, f);
addr += l;
size -= l;
}
fclose(f);
}
static void do_sum(uint32_t start, uint32_t size) static void do_sum(uint32_t start, uint32_t size)
{ {
uint32_t addr; uint32_t addr;
...@@ -1218,6 +1248,8 @@ static term_cmd_t term_cmds[] = { ...@@ -1218,6 +1248,8 @@ static term_cmd_t term_cmds[] = {
#endif #endif
{ "stopcapture", "i", do_stop_capture, { "stopcapture", "i", do_stop_capture,
"capture index", "stop capture" }, "capture index", "stop capture" },
{ "memsave", "lis", do_memory_save,
"addr size file", "save to disk virtual memory dump starting at 'addr' of size 'size'", },
{ NULL, NULL, }, { NULL, NULL, },
}; };
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册