我一直在試圖創建一個函數來爲給定的進程ID寫一個minidump文件。到目前爲止,我有這個:使用Python編寫windows迷你轉儲文件
import win32con, win32api, win32file, ctypes
dbghelp = ctypes.windll.dbghelp
def createMiniDump(pid, file_name):
# Adjust privileges.
adjustPrivilege(win32security.SE_DEBUG_NAME)
pHandle = win32api.OpenProcess(
win32con.PROCESS_QUERY_INFORMATION | win32con.PROCESS_VM_READ ,
0, pid)
print 'pHandle Status: ', win32api.FormatMessage(win32api.GetLastError())
fHandle = win32file.CreateFile(file_name,
win32file.GENERIC_READ | win32file.GENERIC_WRITE,
win32file.FILE_SHARE_READ | win32file.FILE_SHARE_WRITE,
None,
win32file.CREATE_ALWAYS,
win32file.FILE_ATTRIBUTE_NORMAL,
None)
print 'fHandle Status: ', win32api.FormatMessage(win32api.GetLastError())
success = dbghelp.MiniDumpWriteDump(pHandle.handle, # Process handle
pid, # Process ID
fHandle.handle, # File handle
0, # Dump type - MiniDumpNormal
None, # Exception parameter
None, # User stream parameter
None, # Callback parameter
)
print 'MiniDump Status: ', win32api.FormatMessage(win32api.GetLastError())
return success
進程和文件句柄已成功創建。但是,對MiniDumpWriteDump的調用設置以下錯誤: Only part of a ReadProcessMemory or WriteProcessMemory request was completed.
有沒有人有任何想法,爲什麼會發生這種情況?
'dump_type'的值是什麼?我認爲這是外部設置的功能? – icabod
dump_type的值爲0(MiniDumpNormal)。對不起,我的錯誤複製和粘貼。修正了這個問題。 –
我過去成功地創建了一個轉儲文件,該文件沒有通過使用不同的工具引發異常。 –