我有一个在Windows8.1上运行的x64平台应用程序,x64...它时常崩溃(它是Windows服务中托管的多字节COM+对象)。IwantedtogettheOStowritemini-dumpfileswheneveranexceptionhappens,所以我在我的注册表中设置了以下键:然而,当崩溃确实发生时,我在%LOCALAPPDATA%\CrashDumps中什么也看不到。为什么会这样?是因为该服务是在本地系统帐户下运行的吗? 最佳答案 事实证明,正在创建转储。它们是在C:\Windows\System32\%LOC
当我的应用程序崩溃时,它会生成一个小型转储以允许事后调试。我使用选项MiniDumpWithIndirectlyReferencedMemory和MiniDumpWithPrivateReadWriteMemory。直到最近转储文件的大小开始超过500MB时,一切都运行良好。当我想开始调试那个大小的转储时,VisualStudio向我抛出以下错误。“没有足够的存储空间来处理这个命令”我有WinXP32位,其中有4GBRAM,我使用的内存不到1GB。根据VS2008在此过程中的内存使用情况,它应该有足够的可寻址空间。我不想做的事情:破解WinXP以获得更多内存:该应用程序只会不断增长,因
我正在使用GoogleBreakpad为我的Windows应用程序在崩溃时生成故障转储。我的应用程序将C++native代码与C#CLR代码混合在一起。breakpad生成的转储不包含任何CLR信息。是否可以使用Breakpad打开CLR转储?创建CLR转储需要哪些API? 最佳答案 “CLR信息”是什么意思?我一直在使用Breakpad创建故障转储,我可以使用SOS通过它们进行调试。编辑:这是您需要做的.loadbysosclr$$For.NET4~0s$$MostcrashesareonThread0!pe$$Printthee
我正在为子进程编写进程外小型转储。这是相关的代码片段:CONTEXTthread_context{};thread_context.ContextFlags=CONTEXT_FULL;assert(GetThreadContext(child_thread_handle,&thread_context));EXCEPTION_POINTERSexception_ptrs;exception_ptrs.ExceptionRecord=&exception_info.ExceptionRecord;exception_ptrs.ContextRecord=&thread_context;M
我一直在尝试创建一个函数来为给定的进程ID写入小型转储文件。到目前为止我有这个:importwin32con,win32api,win32file,ctypesdbghelp=ctypes.windll.dbghelpdefcreateMiniDump(pid,file_name):#Adjustprivileges.adjustPrivilege(win32security.SE_DEBUG_NAME)pHandle=win32api.OpenProcess(win32con.PROCESS_QUERY_INFORMATION|win32con.PROCESS_VM_READ,0,p
我目前正在尝试设计一个内存转储工具,它可以从另一个进程中获取崩溃进程的内存转储。但我对此完全陌生,我想借此机会深入了解内存转储技术。我想知道为崩溃进程创建内存转储的工作范例。我目前的天马行空的想象如下:当一个进程崩溃时,操作系统总是会知道(我不知道如何但它应该能够)。然后操作系统启动某种机制将崩溃进程的虚拟地址空间的内容复制到所谓的转储文件中。然后我们可以使用WinDbg对转储文件进行调试。我想知道,如果我们可以将崩溃进程的整个虚拟地址空间复制到转储文件中,文件会不会太大?或者我们可以指定要转储的虚拟地址空间(内核/用户)吗?任何人都可以提供一些引用资料供我开始使用,尤其是在以下方面:
我正在努力通过Minidump(DbgHelp.h)获取句柄信息。我正在从映射文件流中获取MINIDUMP_HANDLE_DESCRIPTOR_2列表。然后,我通过使用ObjectInfoRva字段为每个描述符获取一个MINIDUMP_HANDLE_OBJECT_INFORMATION。但是我无法理解这个MINIDUMP_HANDLE_OBJECT_INFORMATION结构给我提供了什么信息,我在网上找不到任何例子来从MINIDUMP_HANDLE_OBJECT_INFORMATION中提取有意义的信息,并且文档不是很有用。如何使用MINIDUMP_HANDLE_OBJECT_INF
我通过以下方式将小型转储写入文件:MiniDumpWriteDump.该文件是从客户端发送给我的(即我不能使用某种即时调试器)。我的问题是:如何打开它?VisualStudio给出错误:“不支持调试旧格式故障转储。”我用谷歌搜索,发现人们正在用visualstudio打开内核转储。这不是内核转储,只是应用程序崩溃的转储。我也试过用WinDbg打开它,但那也无法打开它。我怎样才能得到这些信息? 最佳答案 工具:http://technet.microsoft.com/el-gr/sysinternals/dd996900.aspx您在
我感兴趣的是开发人员在用户流数据结构中放入了哪些有用的东西,这些东西可以嵌入到小型转储中。MSDN是这样描述MiniDumpWriteDump的参数的:PMINIDUMP_USER_STREAM_INFORMATION用户流参数并这样描述参数:UserStreamParam[in]PointertoanarrayofMINIDUMP_USER_STREAM_INFORMATIONstructures.IfthevalueofthisparameterisNULL,nouser-definedinformationisincludedintheminidumpfile.我正在考虑将我程序
如果我使用类似onedescribedhere的类/方法如何在堆栈顶部获取调用的描述/地址?基本上我想要一些可以在调用我们的错误跟踪系统时使用的值。我想根据导致异常的指令的地址“唯一”标识。(通常是mydll.dll的形式!1234ABDC())编辑:一些背景信息:我正在创建一个小型转储以通过电子邮件发送到缺陷跟踪系统(fogbugz)。为了减少重复,我试图为崩溃想出一个合理的“签名”。我知道有一个用于FB的xmlPI,但它需要用户登录,我们还不确定我们是否能够负担得起让人们嗅探我们的流量并获取用户信息。电子邮件现在也更容易实现。稍后我们将使用XMLAPI提交小型转储。