windows – procdump -t – 如何在进程终止时转储 – 使用?
这个问题可能有点尴尬,但这是我的详细问题: 目前我正在考虑设置SysInternals’ procdump.exe以监控我们的应用程序,这些应用程序显示虚假消失 – 也就是说,用户报告应用程序窗口短暂可见挂起后应用程序只是“消失”而没有任何跟踪. 我的第一个想法是运行procdump -e -x.当应用程序遇到未处理的异常时会记录崩溃转储的MyApp.exe,但后来我发现还有一个-t开关,–
进程终止时自动生成转储. 现在问题 我已经使用我们的应用程序测试了-t开关,方法是在我可以触发它的已定义位置插入一个ExitProcess或TerminateProcess调用. 虽然应用程序的行为符合预期,即TerminateProcess立即“杀死”正在运行的应用程序并且ExitProcess需要一段时间,因为运行全局清理,这种方式生成的转储在这两种情况下都是无用的. 我得到的转储-t总是只包含一个sinlge线程(应用程序在终止时运行超过20个线程)并且callstack甚至不在一个有用的位置. (它似乎是终止应用程序中的一个随机线程.) 难道我做错了什么?我可以使用procdump -t来跟踪进程退出函数的意外调用吗?
我想不是,这就是原因: CommandLine: "C:Program FilesSysinternalsprocdump.exe" -t calc.exe 我尝试小心地建议procdump正在等待calc.exe进程句柄. 0:000> kb ChildEBP RetAddr Args to Child 0017f2e0 77135e6c 75336872 00000002 0017f334 ntdll!KiFastSystemCallRet 0017f2e4 75336872 00000002 0017f334 00000001 ntdll!NtWaitForMultipleObjects+0xc 0017f380 76cbf14a 0017f334 0017f3a8 00000000 KERNELBASE!WaitForMultipleObjectsEx+0x100 0017f3c8 76cbf2c2 00000002 7ffdb000 00000000 kernel32!WaitForMultipleObjectsExImplementation+0xe0 0017f3e4 011c6135 00000002 0017f46c 00000000 kernel32!WaitForMultipleObjects+0x18 WARNING: Stack unwind information not available. Following frames may be wrong. 0017fc30 011c999e 00000003 013d1de0 013d1e78 procdump+0x6135 0017fc78 76cc1194 7ffdb000 0017fcc4 7714b495 procdump+0x999e 0017fc84 7714b495 7ffdb000 77ad79b5 00000000 kernel32!BaseThreadInitThunk+0xe 0017fcc4 7714b468 011c99f5 7ffdb000 00000000 ntdll!__RtlUserThreadStart+0x70 0017fcdc 00000000 011c99f5 7ffdb000 00000000 ntdll!_RtlUserThreadStart+0x1b 0:000> dd 17f46c 0017f46c 00000238 00000268 0:000> !handle 238 f Handle 238 Type Process Attributes 0 GrantedAccess 0x1fffff: Delete,ReadControl,WriteDac,WriteOwner,Synch Terminate,CreateThread,VMOp,VMRead,VMWrite,DupHandle,CreateProcess,SetQuota,SetInfo,QueryInfo,SetPort HandleCount 5 PointerCount 52 Name <none> Object Specific Information Process Id 1580 Parent Process 2476 Base Priority 8 在崩溃转储文件中,在进程结束之前获取堆栈最后一个完整的进程线程(TID 3136). 0:000> ~ . 0 Id: dc8.c40 Suspend: -1 Teb: 7ffdd000 Unfrozen 0:000> .formats c40 Evaluate expression: Hex: 00000c40 Decimal: 3136 崩溃转储文件是在最后一个线程完成之后和进程结束之前创建的. (编辑:大庆站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- windows – 删除图像元数据中的“程序名称”
- PB6.5编译的程序 如何在Win7 和 Win10系统上脱离PB开发环境
- 批处理文件 – 以编程方式更改和刷新图标(无需重新启动)
- 在windows平台下采用electron-packager打包electron程序为.
- xaml – 在开发Windows 8 Store应用程序时处理不同的方向
- Windows – 如何将多个文件名传递给上下文菜单Shell命令?
- windows – Eclipse颜色主题和OS LF
- windows下进程间通信
- window下强制杀死某个进程用taskkill /pid 进程号 -t -f命令
- windows – 如何隐藏批量输出
- win10家庭版 远程桌面 身份验证错误,要求的函数
- 立即镜像/同步文件从Windows到Linux服务器的最佳
- Windows 8应用程序是否运行符合标准的JavaScript
- glib:windows下基于MSYS2环境编译glib2的过程
- windows-8 – 地铁样式Windows 8应用程序是否支持
- 如何在不事先知道其本地化名称的情况下使用Windo
- 在Windows中运行/调试python程序的最简单的方法
- New-Object上的Windows RT Powershell(Permissio
- .net – 在Win32/COM方法上调用PInvoke时,通常有
- windows-server-2008 – IIS可以从GPU核心创建线