Windows应用程序调试 [英] Windows application debugging
问题描述
我的运营团队以及开发人员都不知道为什么会这样。基本上,客户端/服务器应用程序的服务器端服务挂起。我们一直在推销新的错误修正版本,并向开发人员提供各种日志,但他们无法解决。更难弄清的是,该应用程序与客户端上的另一个应用程序紧密协作。
My operations group, and the devs are clueless to why this happens. Basically the server-side service of a client/server application hangs. We have been pushing new bugfixed versions and providing all kinds of logs to the devs, but they can't figure it out. To make it even harder to figure out, this is an application that works very closely with another application on the client side.
我不知道我是否在研究某些东西在这里,由于我的windbg经验有限,但这似乎值得一试。 Google的前景很好,但大多数拥有BSOD的游戏玩家都无法提供更多信息...
I have no idea if I'm onto something here, as I have limited windbg experience, but this seems worth checking out. Google comes up pretty promising, but with mostly gamers having BSODs not providing much more info...
我在转储开始时就发现了这一点:
I found this bit at the start of the dump:
警告:odbccp32与comctl32重叠。
警告:odbc32重叠odbccp32
警告:odbc32重叠comctl32 .............
警告:mswsock重叠FWPUCLNT ................
警告:winsta与winnsi重叠。
警告:ntlanman重叠drprov .... ...
警告:srvcli重叠netapi32
警告:wkscli重叠srvcli .....
警告: ncrypt与schannel重叠。
警告:nlaapi与ncrypt重叠。
警告:NapiNSP与nlaapi重叠....
警告:rsaenh与cryptsp
WARNING: odbccp32 overlaps comctl32 . WARNING: odbc32 overlaps odbccp32 WARNING: odbc32 overlaps comctl32 ............. WARNING: mswsock overlaps FWPUCLNT ....... WARNING: winsta overlaps winnsi . WARNING: ntlanman overlaps drprov .... ... WARNING: srvcli overlaps netapi32 WARNING: wkscli overlaps srvcli .......... WARNING: ncrypt overlaps schannel . WARNING: nlaapi overlaps ncrypt . WARNING: NapiNSP overlaps nlaapi .... WARNING: rsaenh overlaps cryptsp
重叠,并且低一些:
OVERLAPPED_MODULE:'odbc32'和'odbccp32'的地址区域重叠
OVERLAPPED_MODULE: Address regions for 'odbc32' and 'odbccp32' overlap
这是完整的!analyze -v转储:
Here is the complete !analyze -v dump:
Microsoft (R) Windows Debugger Version 6.2.8400.0 AMD64
Copyright (c) Microsoft Corporation. All rights reserved.
Loading Dump File [C:\debug\MES\PLSMES.dmp]
User Mini Dump File: Only registers, stack and portions of memory are available
Symbol search path is: srv*c:\symbols*c:\windows\symbols*http://msdl.microsoft.com/download/symbols
Executable search path is:
Windows 7 Version 7601 (Service Pack 1) MP (16 procs) Free x64
Product: Server, suite: TerminalServer SingleUserTS
Machine Name:
Debug session time: Thu Jun 14 10:37:01.000 2012 (UTC + 2:00)
System Uptime: not available
Process Uptime: 0 days 6:36:13.000
......................................WARNING: odbccp32 overlaps comctl32
.WARNING: odbc32 overlaps odbccp32
WARNING: odbc32 overlaps comctl32
.............WARNING: mswsock overlaps FWPUCLNT
.......WARNING: winsta overlaps winnsi
.WARNING: ntlanman overlaps drprov
....
...WARNING: srvcli overlaps netapi32
.WARNING: wkscli overlaps srvcli
..........WARNING: ncrypt overlaps schannel
.WARNING: nlaapi overlaps ncrypt
.WARNING: NapiNSP overlaps nlaapi
....WARNING: rsaenh overlaps cryptsp
Cannot read PEB32 from WOW64 TEB32 7efdd000 - Win32 error 0n30
wow64cpu!CpupSyscallStub+0x9:
00000000`741f2e09 c3 ret
0:000> !analyze -v
*******************************************************************************
* *
* Exception Analysis *
* *
*******************************************************************************
*** WARNING: Unable to verify timestamp for PLSMES.exe
*** ERROR: Module load completed but symbols could not be loaded for PLSMES.exe
FAULTING_IP:
+0
00000000`00000000 ?? ???
EXCEPTION_RECORD: ffffffffffffffff -- (.exr 0xffffffffffffffff)
ExceptionAddress: 0000000000000000
ExceptionCode: 80000003 (Break instruction exception)
ExceptionFlags: 00000000
NumberParameters: 0
FAULTING_THREAD: 0000000000001364
DEFAULT_BUCKET_ID: BAD_DUMP_MISSING_MEMORY
PROCESS_NAME: PLSMES.exe
OVERLAPPED_MODULE: Address regions for 'odbc32' and 'odbccp32' overlap
ERROR_CODE: (NTSTATUS) 0x80000003 - {EXCEPTION} Breakpoint A breakpoint has been reached.
EXCEPTION_CODE: (HRESULT) 0x80000003 (2147483651) - One or more arguments are invalid
NTGLOBALFLAG: 0
APPLICATION_VERIFIER_FLAGS: 0
APP: plsmes.exe
ADDITIONAL_DEBUG_TEXT: Followup set based on attribute [Is_ChosenCrashFollowupThread] from Frame:[0] on thread:[PSEUDO_THREAD]
LAST_CONTROL_TRANSFER: from 0000000000000000 to 00000000741f2e09
PRIMARY_PROBLEM_CLASS: BAD_DUMP_MISSING_MEMORY
BUGCHECK_STR: APPLICATION_FAULT_BAD_DUMP_MISSING_MEMORY
STACK_TEXT:
00000000`00000000 00000000`00000000 bad_dump!missing_stack+0x0
SYMBOL_STACK_INDEX: 0
SYMBOL_NAME: bad_dump!missing_stack
FOLLOWUP_NAME: MachineOwner
MODULE_NAME: bad_dump
IMAGE_NAME: bad_dump
DEBUG_FLR_IMAGE_TIMESTAMP: 0
STACK_COMMAND: ** Pseudo Context ** ; kb
FAILURE_BUCKET_ID: BAD_DUMP_MISSING_MEMORY_80000003_bad_dump!missing_stack
BUCKET_ID: X64_APPLICATION_FAULT_BAD_DUMP_MISSING_MEMORY_bad_dump!missing_stack
WATSON_STAGEONE_URL: http://watson.microsoft.com/StageOne/PLSMES_exe/4_4_3_2582/4f8ac8f6/unknown/0_0_0_0/bbbbbbb4/80000003/00000000.htm?Retriage=1
Followup: MachineOwner
---------
这是否与应用程序挂起有关?重叠的内存似乎不太好。
注意:同一台服务器可以运行同一应用程序的其他实例,而不会发生错误。
Could this be related to the application hangs? Overlapping memory doesn't seem good. Note: The same server runs other instances of the same application without error.
任何进一步调试的指针也将很好。
Any pointers to further debugging would also be nice.
(从ServerFault移出,我想这里最好问这个。)
(Moved from ServerFault, I guess this is better asked here.)
推荐答案
我我们已经看到,当使用64位版本的任务管理器创建32位进程的转储时,会发生这种情况。如果是这种情况,请使用SysWOW64文件夹中的32位版本的任务管理器。此链接描述了问题:
http://blogs.msdn.com/b/tess/archive/2010/09/29/capturing-memory-dumps-for-32-bit-processes-on- an-x64-machine.aspx
I've seen this happen when a 64 bit version of task manager is used to create a dump of a 32 bit process. If this is your case, then use the 32 bit version of task manager which can be found in the SysWOW64 folder. This link describes the problem: http://blogs.msdn.com/b/tess/archive/2010/09/29/capturing-memory-dumps-for-32-bit-processes-on-an-x64-machine.aspx
这篇关于Windows应用程序调试的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!