我正在尝试确定进程挂起的原因,并且正在学习各种工具,例如ProcessExplorer,ProcessMonitor,和WinDbg.无论如何,我正在尝试使用WinDbg,在附加到我的进程后,调试器会这样说:(1e9c.1128):Breakinstructionexception-code80000003(firstchance)eax=7ffda000ebx=00000000ecx=00000000edx=77c5c964esi=00000000edi=00000000eip=77c18b2eesp=0543ff5cebp=0543ff88iopl=0nvupeiplzrnapen
我有一大堆小型转储,这些小型转储是在应用程序运行期间通过MiniDumpWriteDump记录的。小型转储是在操作系统版本与我的开发机器不同的机器上创建的。现在我正在尝试编写一个程序,使用dbghelp.dll从小型转储中提取堆栈跟踪。我正在遍历MINIDUMP_MODULE_LIST并调用SymLoadModule64,但这无法从公共(public)符号服务器下载pdb(kernel32等)。如果我将“C:\Windows\System32”添加到符号路径,它会找到dll并下载符号,但当然它们与小型转储中的dll不匹配,因此结果无用。那么我该如何告诉dbghelp.dll下载并使用正
我的程序设计为在Windows平台上运行。有时它会因错误而终止。我无法在安装它的每台计算机上调试它;所以我向它添加了矢量异常处理程序,它向服务器发送一些关于异常的信息。有一些0xC0000005异常;我修复了它,但程序仍然终止(我无法在我的PC上重现错误)。我写了另一个程序,它等待主进程句柄,并在主进程终止时发送带有进程退出代码的报告。我查看了退出代码,其中大部分是0x40010004(DBG_TERMINATE_PROCESS)。我知道当调试器附加到应用程序然后终止它时会出现此退出代码;但我确定没有调试器。那么...在哪些其他情况下可以使用DBG_TERMINATE_PROCESS退
我希望我的应用创建一个小型转储来帮助调试未处理的异常。在创建转储之前,我可能不知道我需要什么类型的小型转储,那么MINIDUMP_TYPE的组合是什么?我应该使用标志来提供最完整的转储吗? 最佳答案 在DebugInfo.com链接(感谢David)和MSDN页面的帮助下,我得出了以下列表。并非所有标志都包含在DebugInfo.com链接中。使用这些标志应该创建一个全面但大的迷你转储。包括:MiniDumpWithFullMemory-thecontentsofeveryreadablepageintheprocessaddres
我有一台Vista32位机器,我想在其上启用本地内核调试。在WinDbg中,我选择了文件/内核调试并选择了本地选项卡并单击确定。我收到以下消息。系统不支持本地内核调试。...WindowsVista中默认禁用本地内核调试,您必须运行“bcdedit-debugon”并重新启动才能启用它。我天真地按照说明打开提升的命令提示符并键入“bcdedit-debugon”并重新启动。但是,在重新启动时,系统在到达登录屏幕时挂起-或者就在我输入用户名和密码后挂起。我怀疑正在发生的事情是因为启用了调试器,在内核调试器进程中触发了用户模式异常,它正在等待我从附加的调试器输入一些输入??我希望在实际目标
我一直在使用WindowsXP上的Code::Blocks学习C++和Allegro,最近想学习Vim。但是,我不知道如何“手动”编译程序(即不使用IDE)。为了在Vim中进行编译,我已经将makeprg设置为gcc,但我知道我还需要一个makefile。那是什么,我该如何写一个?我可以使用Allegro等库的makefile吗?另外,我非常喜欢CB调试器(我使用的是gdb)。是否可以用Vim做类似的事情?谢谢。 最佳答案 看MinGW.如果您只需要gcc和make,我会避免使用Cygwin。您将需要MinGW和MSYS。MSYS有
我已经从7.1WindowsSDK安装了WinDBG。然后用VC++2008我制作了一个程序“CleanPayload.exe”,它只包含一个“main”和一个故意包含缺陷的函数调用。它是一个包含调试符号的发布版本。我将该程序打开到WindDBG中,然后做了一个.sympath+来指示该程序的PDB所在的位置。做了一个ld*来加载所有符号做了一个lm来验证所有符号都已加载(我的程序的私有(private)符号,Windows库的公共(public)符号)。然后我运行了该程序,它抛出了第一次异常,这是意料之中的。如下:(910.12a0):WOW64breakpoint-code4000
偶尔,当我使用VS2012在Debug模式下启动/调试我的应用程序时,我会得到一个对话框:hastriggeredabreakpoint.它不包含其他信息,所以我点击break看看发生了什么。哦,但是后来我得到“wntdll.pdbnotloaded”,并且没有关于该问题的其他信息。调用堆栈指向ntdll.dll,此时我的应用程序似乎还没有开始执行。此时选择继续将使应用程序/调试器照常继续。这种情况经常发生(10次发射中大约有7次发射)。我正在运行Windows8(64位)和带有更新1的VisualStudio2012。以前我有Windows7(64位)和VS2010,从来没有遇到过这
我有一个Windows事件日志条目,给出了触发应用程序崩溃的失败调用的偏移量。我有一个发布版本、相应的.PDB文件和源代码。我没有.MAP或.COD文件。如何找到失败的源代码行? 最佳答案 WinDbg有一个ln命令,可以为您提供最近的地址符号。使用以下命令打开您的二进制文件:WinDbg-zsomebin.dll然后在命令窗口中,键入:ln找到它所在的函数后,运行ufsomebin!SomeFunc找到离地址最近的线路。 关于windows-给定崩溃偏移量、.PDB和源代码,我如何找到
如何查看我的应用程序在Windows中访问了哪些文件/注册表项? 最佳答案 在以下位置查看进程监视器http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx 关于windows-查看Windows中的应用程序正在访问哪些文件/注册表项,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/1509383/