2012-02-06 64 views
3

我想在活动ASP.NET 4.0网站上找到间歇性堆栈溢出异常的来源。我使用ADPlus(adplus_old.vbs,不是新的adplus.exe)捕获了一些崩溃转储,使用忽略所有其他类型异常的自定义配置(请参阅第1个答案:Help catching StackOverflowException with WinDbg and ADPlus)。Windbg和堆栈溢出异常 - 得到崩溃转储但Windbg输出无意义

我在运行应用程序的服务器上运行Windbg。该服务器是基于Intel的运行64位Win 2003.WinDbg版本是64位的6.12。我生成的组件的PDB文件,我怀疑异常来自并将它们放在网站的/ bin文件夹中(有几个程序集,我没有PDB文件,但我认为他们不牵连在这个问题)。我将环境变量_NT_SYMBOL_PATH指向/ bin文件夹。 WinDbg显示符号路径为:C:\ WINDOWS \ Microsoft.NET \ Framework64 \ v4.0.30319; D:\ InetPub \ LiveSites \ MySite \ bin

当我运行WinDbg时,打开崩溃转储后运行.loadby sos clr then!clrstack。输出非常小 - 当我在测试站点上设置了一个故意的S/O时,我清楚地指出了导致异常的方法。出了什么问题?

Microsoft (R) Windows Debugger Version 6.12.0002.633 AMD64 
Copyright (c) Microsoft Corporation. All rights reserved. 


Loading Dump File [F:\ADPlus\Crash_Mode__Date_02-03-2012__Time_14-36-11PM\PID-9212__W3WP.EXE_-MySite-__1st_chance_StackOverflow__full_0140_2012-02-04_00-24-45-123_23fc.dmp] 
User Mini Dump File with Full Memory: Only application data is available 

Comment: '1st_chance_StackOverflow_exception_in_W3WP.EXE_-MySite-_running_on_MyServer' 
Symbol search path is: C:\WINDOWS\Microsoft.NET\Framework64\v4.0.30319;D:\InetPub\LiveSites\MySite\bin 
Executable search path is: 
Windows Server 2003 Version 3790 (Service Pack 2) MP (8 procs) Free x64 
Product: Server, suite: Enterprise TerminalServer SingleUserTS 
Machine Name: 
Debug session time: Sat Feb 4 00:24:50.000 2012 (UTC + 0:00) 
System Uptime: 185 days 15:16:43.314 
Process Uptime: 0 days 9:49:58.000 
................................................................ 
................................................................ 
................................................................ 
................................................................ 
..................................... 
Loading unloaded module list 
.. 
This dump file has an exception of interest stored in it. 
The stored exception information can be accessed via .ecxr. 
(23fc.21ec): Stack overflow - code c00000fd (first/second chance not available) 
*** ERROR: Symbol file could not be found. Defaulted to export symbols for clr.dll - 
clr!LogHelp_TerminateOnAssert+0x49e13: 
00000644`7f14d883 894c2448  mov  dword ptr [rsp+48h],ecx ss:00000000`0ee55fc8=00000000 
0:054> .loadby sos clr 
0:054> !clrstack 
PDB symbol for clr.dll not loaded 
OS Thread Id: 0x21ec (54) 
Child SP   IP    Call Site 
000000000eecf138 000006447f14d883 [GCFrame: 000000000eecf138] 
000000000eecf178 000006447f14d883 [ContextTransitionFrame: 000000000eecf178] 
000000000eecf1b8 000006447f14d883 [GCFrame: 000000000eecf1b8] 
000000000eecf3a0 000006447f14d883 [ComMethodFrame: 000000000eecf3a0] 

这是ADPlus的我的命令:

adplus_old.vbs -p 12345 -c F:\ADPlus\DumpStackOverflow.cfg 
(where 12345 is the PID of the w3wp.exe process I am attaching to. 

这是ADPlus的我的配置文件:

<ADPlus> 
<Settings> 
    <RunMode>CRASH</RunMode> 
    <OutputDir>F:\ADPlus</OutputDir> 
</Settings> 
<Exceptions> 
    <Option>FullDumpOnFirstChance</Option> 
    <Option>MiniDumpOnSecondChance</Option> 
    <Option>NoDumpOnFirstChance</Option> 
    <Option>NoDumpOnSecondChance</Option> 
    <Config> 
     <Code>AllExceptions</Code> 
     <Actions1>Void</Actions1> 
     <Actions2>Void</Actions2> 
     <ReturnAction1>GN</ReturnAction1> 
     <ReturnAction2>GN</ReturnAction2> 
    </Config>  
    <Config> 
     <!-- 
     av = AccessViolation 
     ch = InvalidHandle 
     ii = IllegalInstruction 
     dz = IntegerDivide 
     c000008e = FloatingDivide 
     iov = IntegerOverflow 
     lsq = InvalidLockSequence 
     sov = StackOverflowException 
     eh = CPlusPlusEH 
     * = UnknownException 
     clr = NET_CLR 
     bpe = CONTRL_C_OR_Debug_Break 
     ld = DLL_Load 
     ud = DLL_UnLoad 
     epr = Process_Shut_Down 
     sbo = Stack_buffer_overflow 
     --> 
     <Code>sov;sbo</Code> 
     <Actions1>Log;Time;Stack;FullDump;EventLog</Actions1> 
     <CustomActions1>!runaway</CustomActions1> 
     <Actions2>Log;Time;Stack;FullDump;EventLog</Actions2> 
     <CustomActions2>!runaway</CustomActions2> 
     <!-- 
     G = go 
     GN = go unhandled exception 
     GH = go handled exception 
     Q = quit 
     QD = quit and detach 
     --> 
     <ReturnAction1>GN</ReturnAction1> 
     <ReturnAction2>GN</ReturnAction2> 
    </Config> 
    <Config> 
     <Code>clr</Code> 
     <Actions1>Void</Actions1> 
     <Actions2>Log;Time;Stack;FullDump;EventLog</Actions2> 
     <ReturnAction1>GN</ReturnAction1> 
     <ReturnAction2>GN</ReturnAction2> 
    </Config> 
    <Config> 
     <Code>epr</Code> 
     <Actions1>Log;Time;Stack;FullDump;EventLog</Actions1> 
     <Actions2>Void</Actions2> 
     <ReturnAction1>GN</ReturnAction1> 
     <ReturnAction2>GN</ReturnAction2> 
    </Config> 
</Exceptions> 
</ADPlus> 
+0

未加载clr.dll的PDB符号=>您可能需要加载CLR符号。试试命令.symfix D:\ InetPub \ LiveSites \ MySite \ bin和.reload在windbg – plodoc 2012-02-08 11:35:24

+0

谢谢,但这没有什么区别。 – Laurence 2012-02-08 13:58:49

回答

7

运行可提供有关异常的详细信息 “分析-v!”。

+0

谢谢!这给了我需要的细节。我不明白为什么通常的!clrstack命令不起作用,但我得到了我所需要的。 – Laurence 2012-02-08 13:58:28

+0

我完全爱你! – NestorArturo 2016-01-06 16:02:02