我正在尝试为我的C ++程序制作快照。 我的程序使用大量的IO操作,运行约两个小时后失败。我正在寻找快照功能,因为复制它需要太长时间才能进行调试。
我发现“ pydbg” 模块支持快照功能,因此我尝试使用它。
我已经使用pydbg实现了一个简单的python代码。使用此代码,它将运行exe文件并随时保存和加载快照。 当我将它与一个简单的程序一起使用时,它可以很好地工作。 但是,如果我使用我的程序,则会发生MemoryError。
在pydbg中,它通过ReadProcessMemory API读取进程内存并保存原始数据。
read__buf = create_string_buffer(length)
while length:
if not kernel32.ReadProcessMemory(self.h_process, address, read_buf, length, byref(count)):
raise pdx("ReadProcessMemory(%08x, %d, read=%d)" % (address, length, count.value), True)
data += read_buf.raw
此时,发生 MemoryError 。
我认为原始数据太大,无法读取或保存。 可以拆分并保存该数据吗?