all groups > visual studio .net debugging > march 2007 >
You're in the

visual studio .net debugging

group:

Reading DRWTSN32 logs


Reading DRWTSN32 logs Andrew Chalk
3/26/2007 9:31:06 PM
visual studio .net debugging:
Can anyone refer me to a reference (MS or other) on how to read a DRWTSN32
log?

Also, to get my VC++ v8.0 program symbols used by DRWTSN32 what file should
I place where?

Thanks!

Re: Reading DRWTSN32 logs Oleg Starodumov
3/27/2007 12:00:00 AM

[quoted text, click to view]

Reading the log should be simple. It usually consists of the following parts:
- appname, time, exception information
- system information
- list of processes running at the moment
- list of modules loaded by the crashed process (for each module, the address range
occupied by it is specified)
- register values, and disassembly of a number of CPU instructions around the place
where exception occurred; the exact place of the exception is marked with "FAULT ->"
- call stack of the thread that raised the exception (if symbols have been found,
it will show the function names and may be also source line info)
- raw contents of stack memory

Usually you should start by looking at the call stack. If symbols were properly loaded,
you will see the function names there, and may be also source file/line info. If the latter
is not shown, you can use the approach discussed in your previous post to find them
(using the fault address reported in the disassembly part of the report, and return addresses
in the call stack part).

[quoted text, click to view]

The easiest way is to place the symbols (the application's .pdb file) in the same directory
with the executable. Note that Dr.Watson will be able to read VC8 symbols only
on Windows XP and newer systems.

Note that Dr.Watson will be able to show good call stack only if the crash occurred
in one of your own modules (whose symbols are available). If the crash occurred in
a system dll, the call stack will not be as good, since it will not be able to find symbols
for that dll (at least in the default configuration) (the ultimate quality of the call stack
in this case will depend on the operating system version; on newer OSs it still will be
able to provide some call stack information).

Also note that nowadays it is more effective to use crash dumps than Dr.Watson logs
for crash analysis. With crash dumps, you don't have to have symbols on the user's system,
can get good call stacks etc. even if the crash occurs in a system dll, and can get much more
information about the application's state than Dr.Watson's log was ever able to provide.
You can find an intro here:
http://www.codeproject.com/debug/postmortemdebug_standalone1.asp
and lots of additional info on the net, including my site below.

--
Oleg
[VC++ MVP http://www.debuginfo.com/]



Re: Reading DRWTSN32 logs Andrew Chalk
3/27/2007 12:13:23 PM
Is this:
[quoted text, click to view]

*----> Stack Back Trace <----*

FramePtr ReturnAd Param#1 Param#2 Param#3 Param#4 Function Name

013E43EC 0043A0E1 00ACEB68 00000001 013E453C 013E4720 !<nosymbols>

013E4420 004383BA 00ACEB68 00000001 013E453C 013E4720 !<nosymbols>

013E4458 0042781C 00ACEB68 013E4630 013E4720 00ADE690 !<nosymbols>

013E453C 00427642 00ACEB68 00000050 013E4718 013E4720 !<nosymbols>

013E4630 0042443F 00000001 00000000 013E4718 013E4720 !<nosymbols>

013E4718 004235D6 013E4F14 013E4F1C 00ADE690 013E4870 !<nosymbols>

013E4F10 00422E15 00ADE800 013E5104 013E510C 00ADE690 !<nosymbols>

013E50F4 003AC0D5 00AE4780 00ADE800 013E0000 013E5A80 !<nosymbols>

013E5590 003A93B9 00ADE800 00000000 013E5A80 CCCCCCCC
!MC::CSocketEventSinkImpl::OnRead

013EFF7C 003C2616 00ADE800 CCCCCCCC CCCCCCCC 00ADE690
!MC::CSocketEventSinkImpl::OnRead

013EFFB4 7C57B388 00ADE968 CCCCCCCC CCCCCCCC 00ADE690
!MC::CSocketEventSinkImpl::OnRead

013EFFEC 00000000 003C2560 00ADE690 00000000 000000C8 kernel32!lstrcmpiW

=======================================
It appears that the crash occurs in the C runtime as a result of a bad
parameter.

- A

The crash occurs inside a module with no symbols (a system library) called
from my application. But it is ultimately my process in which the crash
occurs

[quoted text, click to view]

Re: Reading DRWTSN32 logs Andrew Chalk
3/27/2007 2:24:23 PM
Or is this the list of modules. They don't have names!

(00400000 - 00473000)

(77F80000 - 77FFD000)

(10000000 - 10115000)

(7C570000 - 7C623000)

(1F7B0000 - 1F7E1000)

(7C2D0000 - 7C332000)

(77D30000 - 77DA1000)

(71710000 - 71794000)

(77F40000 - 77F7B000)

(77E10000 - 77E6F000)

(76B30000 - 76B6E000)

(70A70000 - 70AD6000)

(78000000 - 78045000)

(782F0000 - 78535000)

(00230000 - 00269000)

(00270000 - 0029B000)

(75030000 - 75044000)

(75020000 - 75028000)

(74FF0000 - 75002000)

(77980000 - 779A4000)

(75050000 - 75058000)

(7C340000 - 7C396000)

(7C3A0000 - 7C41B000)

(002A0000 - 00368000)

(00370000 - 003FE000)

(1F850000 - 1F866000)

(74FD0000 - 74FEE000)

(75010000 - 75017000)

(67DE0000 - 67DEA000)

(7C000000 - 7C054000)

State Dump for Thread Id 0x6ac



[quoted text, click to view]

Re: Reading DRWTSN32 logs Oleg Starodumov
3/27/2007 11:58:08 PM

[quoted text, click to view]

This is the call stack. Symbols for the main .exe could not be found by Dr.Watson,
but the call stack seems to be good enough to use the Registers window approach
to find the source lines (using ReturnAd column).

Oleg


AddThis Social Bookmark Button