Debug Symbols



  • Du solltest Dich mit der Hilfe zu WinDbg beschäftigen...
    http://www.microsoft.com/whdc/devtools/debugging/default.mspx

    ADPlus und IIS:
    http://support.microsoft.com/kb/286350



  • Ok, danke.



  • Hmm..ok. Hast du mir vielleicht noch ein paar Tips?

    Habe nun die Debug Tools runtergelade und mit adplus experimentiert.
    Habe in meinen Quellcode einen Division duch null eingebaut welche von adplus korrekt aufgezeichnet wurde. (adplus.vbs -iis -crash)
    Im Dumpfile steht dann die Extension und die Funktion, sogar der Quellcode wird aufgerufen und die entsprechende Zeile Markiert.

    Soweit funktionierts bei mir auf dem Rechner.

    Ich musste ja den Pfad zu den MS-Symboldateien angeben (Path) wie hier schon beschrieben.

    Wenn ich das jetzt beim Kunden aufzeichnen will, was muss ich machen?

    1. Muss er auch diese Umgebungsvariable angeben?(für die Symbole)
    2. Reicht das , wenn ich ihm die adplus.vbs Datei schicke oder braucht er die kompletten Debugging Tools?
    3. Mit dem *.pdb Dateien kann ich immer noch nichts anfange. Diese werden ja erzeugt, wenn ich die DLL mit Debuginformationen erzeuge.
    Nur was steht da drin?
    Muss ich die dem Kunden auch mitsenden?

    4. Wenn es nun funktioniert und der Kunde sendet mit ein Dumpfile, dann öffne ich die mti windbg.exe und kann dann auch die Funktion rauslesen oder?

    Danke Mondmann



  • Mondmann schrieb:

    Wenn ich das jetzt beim Kunden aufzeichnen will, was muss ich machen?

    1. Muss er auch diese Umgebungsvariable angeben?(für die Symbole)

    Nein.

    Mondmann schrieb:

    2. Reicht das , wenn ich ihm die adplus.vbs Datei schicke oder braucht er die kompletten Debugging Tools?

    Gute Frage... musst halt schauen, was ADPlus alles braucht... das brauchst Du dann auch auf dem Zielrechner...

    Mondmann schrieb:

    3. Mit dem *.pdb Dateien kann ich immer noch nichts anfange. Diese werden ja erzeugt, wenn ich die DLL mit Debuginformationen erzeuge.
    Nur was steht da drin?

    Das verwendet dann WinDbg um Dir die Zeile anzuzeigen... *Du* musst damit gar nichts machen... sie müssen nur da sein!

    Mondmann schrieb:

    Muss ich die dem Kunden auch mitsenden?

    Nein.

    Mondmann schrieb:

    . Wenn es nun funktioniert und der Kunde sendet mit ein Dumpfile, dann öffne ich die mti windbg.exe und kann dann auch die Funktion rauslesen oder?

    Ja, eben so wie Du es auch bei Dir gemacht hast...


  • Mod

    BTW: Nur um Crashdumps zu laden genügt Dein Visual Studio.



  • Alles klar, habs schon losgeschickt.
    Allerdings hatte ich da Deinen Post noch nicht gelesen und dern Kunden veranlasst die Umgebungsvariable zu setzten.
    Grund ist, daß bei mir adplus aufs Internet zugreifen will..auf den Symbol Server von ms..dann wird er das beim Kunden wohl auch wollen...
    Naja, bin mal hier sehr Dankbar für die Tips(vor allem mit ADPLus)
    der Absturz tritt ca. 1x wöchentlich auf..so lange muss er es halt mitlaufen lassen...



  • Martin Richter schrieb:

    BTW: Nur um Crashdumps zu laden genügt Dein Visual Studio.

    Sagen wir mal so: Nur um simple Crashdumps zu laden genügt VS 😉


  • Mod

    Jochen Kalmbach schrieb:

    Martin Richter schrieb:

    BTW: Nur um Crashdumps zu laden genügt Dein Visual Studio.

    Sagen wir mal so: Nur um simple Crashdumps zu laden genügt VS 😉

    Was sind komplexe Crashdumps? 🤡



  • Martin Richter schrieb:

    Was sind komplexe Crashdumps? 🤡

    z.B.:
    - Kernel-Dumps
    - Mixed-Mode User Dumps



  • So, ich hab nun den Crashdump vom Kunden.
    Leider kann ich daraus nichts erkennbares ablesen.
    Als ich bei mir hier einen Fehler Provoziert habe, hat der Crashdump mir die Funktion, sogar die Zeile des Fehlers angezeigt.
    In dem Crashdump vom Kunden steht nichts.
    Lediglich:

    Datei:

    PID-6312__W3WP.EXE_-ActiconAppPool-__1st_chance_Process_Shut_Down__full_1e68_2008-04-17_15-49-59-747_18a8.dmp

    Dump:

    eax=00000000 ebx=00000000 ecx=00000000 edx=00000000 esi=7c947c0f edi=fffffffe
    eip=7c9485ec esp=0006fe18 ebp=0006ff0c iopl=0 nv up ei pl zr na pe nc
    cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000246
    ntdll!KiFastSystemCallRet:
    7c9485ec c3 ret

    Bei der Zweitletzten Zeile stand bei mir meine Funktion
    Hier steht ntdll!KiFastSystemCallRet
    Was auch immer das bedeuten mag.
    Schätze, in dieser DLL wird wohl kein Fehler vorhanden sein, da ja nur meine Applikation abstürzt.

    Datei:

    PID-6820__DLLHOST.EXE_System_Application__1st_chance_CONTRL_C_OR_Debug_Break__mini_079c_2008-04-21_10-41-57-074_1aa4.dmp

    Dump:

    This dump file has an exception of interest stored in it.
    The stored exception information can be accessed via .ecxr.
    eax=7ffda000 ebx=00000001 ecx=00000002 edx=00000003 esi=00000004 edi=00000005
    eip=7c93a3e1 esp=009dffcc ebp=009dfff4 iopl=0 nv up ei pl zr na pe nc
    cs=001b ss=0023 ds=0023 es=0023 fs=0038 gs=0000 efl=00000246
    Unable to load image C:\WINDOWS\system32\ntdll.dll, Win32 error 0n2
    *** WARNING: Unable to verify timestamp for ntdll.dll
    ntdll!DbgBreakPoint:
    7c93a3e1 cc int 3

    Datei:

    PID-8080__INETINFO.EXE__1st_chance_CONTRL_C_OR_Debug_Break__mini_17c8_2008-04-21_10-41-41-886_1f90.dmp

    This dump file has an exception of interest stored in it.
    The stored exception information can be accessed via .ecxr.
    eax=7ffdd000 ebx=00000001 ecx=00000002 edx=00000003 esi=00000004 edi=00000005
    eip=7c93a3e1 esp=013bffcc ebp=013bfff4 iopl=0 nv up ei pl zr na pe nc
    cs=001b ss=0023 ds=0023 es=0023 fs=0038 gs=0000 efl=00000246
    Unable to load image C:\WINDOWS\system32\ntdll.dll, Win32 error 0n2
    *** WARNING: Unable to verify timestamp for ntdll.dll
    ntdll!DbgBreakPoint:
    7c93a3e1 cc int 3

    Datei:

    PID-10148__W3WP.EXE_-DefaultAppPool-__1st_chance_Process_Shut_Down__full_15a0_2008-04-18_20-08-23-877_27a4.dmp

    Dump:

    eax=00000000 ebx=00000000 ecx=00000000 edx=00000000 esi=7c947c0f edi=fffffffe
    eip=7c9485ec esp=0006fe18 ebp=0006ff0c iopl=0 nv up ei pl zr na pe nc
    cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000246
    ntdll!KiFastSystemCallRet:
    7c9485ec c3 ret

    Was fange ich nun mit dem Crashdump an und wie gehts nun weiter?
    Kann da jemand etwas rauslesen?

    Was auch komisch ist:
    Das größte Dumpfile hat 21MB..stehen aber nur ein paar Zeilen drin...



  • Wie gesagt:
    - Du brauchst die *passende* PDB-Datei für die EXE, die der Kunde hatte!
    - Du musst den Pfad zur PDB-Datei richtig einstellen (.sympath+ Pfad_Zur-PDB-Datei)
    - Du musst teilweise auch den Pfad zum Image (EXE) richtig einstellen; d.h. Du benötigst auch die passende EXE vom Kunden)

    Du kannst auch alternativ mir die PDB/EXE/DMP zukommen lassen, dann mach ich es mal hier bei mir...



  • Jochen Kalmbach schrieb:

    Lass auf dem System ein Crash-Dump (minidump) erstellen (wenn er sich aufgehängt hat via ADPlus).
    Und dann einfach bei Dir lokal den dmp in WinDbg öffnen und den Fehler (oder callstack) anzeigen lassen...

    !analyze -v
    

    Dazu musst Du aber die gleichen pdb/dlls von Dir haben wie auf dem Zielrechner.

    Die habe ich...aber wie und wo führe ich das !analyze -v aus?



  • Es sollte eigentlich auch reichen, die EXE vom Kunden samt dazu passender PDB-Datei sowie die DMP-Datei in ein Verzeichnis zu kippen und die DMP-Datei dann mit VS 2005/2008 zu öffnen und F5 zu drücken. Zumindestens klappt das bei mir immer so.



  • Jochen Kalmbach schrieb:

    Wie gesagt:
    - Du brauchst die *passende* PDB-Datei für die EXE, die der Kunde hatte!
    - Du musst den Pfad zur PDB-Datei richtig einstellen (.sympath+ Pfad_Zur-PDB-Datei)
    - Du musst teilweise auch den Pfad zum Image (EXE) richtig einstellen; d.h. Du benötigst auch die passende EXE vom Kunden)

    Du kannst auch alternativ mir die PDB/EXE/DMP zukommen lassen, dann mach ich es mal hier bei mir...

    Naja, es ist keine .exe, es ist eine DLL die im Kontext des IIS läuft.(ISAPI-DLL)quasi wie eine ASP Seite.
    Die PDB's...werden die denn auf dem Rechner vom Kunden erstellt?

    Eigentlich hat de Kunde exact diesselben DLLs und Pdbs wie ich hier, hab sie ihm ja gesendet, da ich meinte er braucht die.
    Hab nun meine DLLS und PDBs in den Ordner mit dem DMP Files kopiert und !analyze -v ausgeführt (habs gefunden)

    Da kommt dann sowas heraus:

    0:000> !analyze -v
    ERROR: FindPlugIns 8007007b
    *******************************************************************************
    * *
    * Exception Analysis *
    * *
    *******************************************************************************

    FAULTING_IP:
    +0
    00000000 ?? ???

    EXCEPTION_RECORD: ffffffff -- (.exr 0xffffffffffffffff)
    ExceptionAddress: 00000000
    ExceptionCode: 80000003 (Break instruction exception)
    ExceptionFlags: 00000000
    NumberParameters: 0

    FAULTING_THREAD: 00001c14

    DEFAULT_BUCKET_ID: STATUS_BREAKPOINT

    PROCESS_NAME: w3wp.exe

    ERROR_CODE: (NTSTATUS) 0x80000003 - {AUSNAHME} Haltepunkt Im Quellprogramm wurde ein Haltepunkt erreicht.

    NTGLOBALFLAG: 0

    APPLICATION_VERIFIER_FLAGS: 0

    LAST_CONTROL_TRANSFER: from 7c947c1b to 7c9485ec

    STACK_TEXT:
    0006fe14 7c947c1b 7c8268c3 ffffffff fffffffe ntdll!KiFastSystemCallRet
    0006fe18 7c8268c3 ffffffff fffffffe 00000000 ntdll!NtTerminateProcess+0xc
    0006ff0c 7c826905 fffffffe 77e8f3b0 ffffffff kernel32!_ExitProcess+0x63
    0006ff20 77b9ade4 fffffffe 0006ff5c 77b9aefc kernel32!ExitProcess+0x14
    0006ff2c 77b9aefb fffffffe 00000000 fffffffe msvcrt!__crtExitProcess+0x32
    0006ff5c 77b9af52 fffffffe 00000000 00000000 msvcrt!_cinit+0xd2
    0006ff70 01001a3c fffffffe 00000000 00000000 msvcrt!exit+0x11
    0006ffc0 7c82f23b 00000000 00000000 7ffd4000 w3wp!wmainCRTStartup+0x144
    0006fff0 00000000 010018f8 00000000 78746341 kernel32!BaseProcessStart+0x23

    STACK_COMMAND: ~0s; .ecxr ; kb

    FOLLOWUP_IP:
    msvcrt!__crtExitProcess+32
    77b9ade4 cc int 3

    SYMBOL_STACK_INDEX: 4

    FOLLOWUP_NAME: MachineOwner

    MODULE_NAME: msvcrt

    IMAGE_NAME: msvcrt.dll

    DEBUG_FLR_IMAGE_TIMESTAMP: 45d71ff0

    PRIMARY_PROBLEM_CLASS: STATUS_BREAKPOINT

    BUGCHECK_STR: APPLICATION_FAULT_STATUS_BREAKPOINT

    SYMBOL_NAME: msvcrt!__crtExitProcess+32

    FAILURE_BUCKET_ID: APPLICATION_FAULT_STATUS_BREAKPOINT_msvcrt!__crtExitProcess+32

    BUCKET_ID: APPLICATION_FAULT_STATUS_BREAKPOINT_msvcrt!__crtExitProcess+32

    Followup: MachineOwner
    ---------


  • Mod

    Lade doch mal die Dump Datei ins VS und drücke F5. Was siehtst Du dann?

    Öffne das Debug -> Modules Fenster und schau nach ob alle kritischen Symboldateien geladen wurden.



  • Also es kommt zB. daß für inetinfo.exe (Das ist der IIS-Webserver) Keine Debuginformationen gefunden werden konnten.
    Danach kommt das hier:

    PID-8080__INETINFO.EXE__1st_chance_CONTRL_C_OR_Debug_Break__mini_17c8_2008-04-21_10-41-41-886_1f90.dmp hat einen Haltepunkt ausgelöst.

    Und dann:

    Es sind keine Symbole für Aufruflistenrahmen geladen. Der Quellcode kann nicht angezeigt werden.

    Im Module Fenster kommt ein rotes Ausrufezeichen bei xpsp2res.dll und bei anderen DMP Files noch viele andere.

    xpsp2res.dll *C:\WINDOWS\system32\xpsp2res.dll N/A N/A Es konnte keine übereinstimmende Binärdatei gefunden werden. 15 5.02.3790.3959 17.02.2007 07:35 00800000-00AD9000* PID-10148__W3WP.EXE_-DefaultAppPool-__1st_chance_Process_Shut_Down__full_15a0_2008-04-18_20-08-23-877_27a4.dmp: Systemeigen

    Edit. Es ist bei jeder DLL im Module Fenster angegeben, daß keine Binärdateien gefunden werden konnten



  • Also ich hab exakt diesselben DLLs und PDB Files wie der Kunde, trotzdem kann er die Symbole nicht laden.
    Im windbg.exe habe ich als Symbolpfad den MS-Server angegeben.
    Der Kunde hat W200K Server ich W XP Prof.
    Könnte es daran liegen?
    Außerdem hat es natürlich nen anderen Webserver (IIS6) während ich hier nur IIS 5.1 habe..macht das was?


  • Mod

    Entscheidend ist IMHO der Callstack.
    Vermutlich läuft Deine Applikation auf einen INT 3.

    Hast Du einen Symbolserver definiert? Dann sollte er auch Symbole des IIS finden.



  • Den Symboslerver von MS habe ich aktiviert...was ist ein INT3?

    Ich habe natürlich auch andere Kunden bei denen läufts auch einwandfrei....



  • Mondmann schrieb:

    Den Symboslerver von MS habe ich aktiviert...was ist ein INT3?

    Breakpoint...

    Mondmann schrieb:

    Ich habe natürlich auch andere Kunden bei denen läufts auch einwandfrei....

    Auf dem Rechner läuft so viel (Schrott); siehe "lm"... da wundert es mich nicht, dass es abstürzt... ich würde sogar auch "kein Speicher" tippen, da der Speicherbereich durch die DLLs so zugemüllt ist...

    0:080> lm
    start    end        module name
    00c90000 00f69000   xpsp2res   (deferred)             
    01000000 01006000   inetinfo # (pdb symbols)          
    01aa0000 01ab9000   odbcint    (deferred)             
    01b00000 01b05000   lisfecnv   (deferred)             
    01b10000 01b75000   msvcp60    (deferred)             
    01b80000 01c4e000   reapi    T (no symbols)           
    01c50000 01c64000   gwart      (deferred)             
    071d0000 071d7000   lonsint    (deferred)             
    073e0000 0743b000   hnetcfg    (deferred)             
    077c0000 077c9000   letadata   (deferred)             
    07d20000 07d29000   normaliz   (deferred)             
    08b10000 08b33000   drviis     (no symbols)           
    08d70000 08d85000   msgtrack   (deferred)             
    08da0000 08dab000   onsubmit   (deferred)             
    08db0000 08dc7000   MiscAt   T (no symbols)           
    09070000 090e5000   phatcat    (no symbols)           
    092b0000 092bd000   e2kdsn     (deferred)             
    096c0000 096e5000   exps       (deferred)             
    09700000 0972e000   exsmime    (deferred)             
    097e0000 09816000   msgfilter   (deferred)             
    098c0000 09955000   MSExchange_UceContentFilter T (no symbols)           
    10000000 10053000   resvc    T (no symbols)           
    45e00000 45e45000   iertutil   (deferred)             
    46570000 4663f000   wininet    (deferred)             
    46690000 467b7000   urlmon     (deferred)             
    4a380000 4a40f000   wzcsvc     (deferred)             
    4b180000 4b287000   esent      (deferred)             
    4bb40000 4bb4f000   fcachdll T (no symbols)           
    4bdb0000 4bdbd000   ntfsdrv    (deferred)             
    4c000000 4c03d000   odbc32     (deferred)             
    4e7d0000 4e82c000   winhttp    (deferred)             
    4f170000 4f1f2000   smtpsvc  T (no symbols)           
    56f50000 56f61000   admwprox   (deferred)             
    57590000 575d0000   infocomm T (no symbols)           
    59870000 59881000   xlsasink   (deferred)             
    598a0000 598c0000   turflist   (deferred)             
    598c0000 598cb000   protolog   (deferred)             
    59940000 5995a000   peexch50   (deferred)             
    5a470000 5a482000   coadmin  T (no symbols)           
    5b690000 5b69e000   svcext     (deferred)             
    5b850000 5b856000   staxmem    (deferred)             
    5b900000 5b98d000   vssapi     (deferred)             
    5c900000 5c939000   seo        (deferred)             
    5d080000 5d086000   rwnh       (deferred)             
    5d810000 5d815000   rpcref     (deferred)             
    5ffd0000 60112000   iiscfg     (deferred)             
    61620000 61631000   iismap     (deferred)             
    61730000 61741000   wamreg     (deferred)             
    618d0000 618d9000   iisif    T (no symbols)           
    618e0000 6191a000   protomsg   (deferred)             
    61920000 61933000   pop3svc    (deferred)             
    61940000 61949000   pop3be     (deferred)             
    619a0000 619c4000   iisproto   (deferred)             
    619d0000 619da000   febecfg    (deferred)             
    61f90000 62024000   phatq    T (no symbols)           
    62030000 6214a000   tranmsg  T (no symbols)           
    62200000 6223c000   metadata   (deferred)             
    62290000 62298000   ifsproxy T (no symbols)           
    62c00000 62c12000   mdbevent   (deferred)             
    62c30000 62c44000   exosal     (deferred)             
    62e90000 62f2c000   dsaccess T (no symbols)           
    62f30000 62fe8000   epoxy    T (no symbols)           
    62ff0000 63040000   exchmem    (deferred)             
    63040000 6304c000   pttrace  T (no symbols)           
    64020000 64028000   iscomlog   (deferred)             
    64030000 64040000   isatq    T (no symbols)           
    648b0000 648dd000   iisutil    (deferred)             
    64960000 64987000   iisrtl     (deferred)             
    64a00000 64a16000   iislog     (deferred)             
    64ba0000 64ba9000   iisadmin T (no symbols)           
    679c0000 679e0000   lisrtl   T (no symbols)           
    68000000 68035000   rsaenh     (deferred)             
    68590000 685cf000   lnfocomm T (no symbols)           
    68620000 68632000   lsatq    T (no symbols)           
    694f0000 69514000   ftpsvc2  T (no symbols)           
    69720000 6972c000   exstrace T (no symbols)           
    6c8c0000 6c8d5000   mailmsg    (deferred)             
    6d790000 6d838000   dbghelp    (deferred)             
    718f0000 718f8000   wshtcpip   (deferred)             
    71930000 71972000   mswsock  T (no symbols)           
    719c0000 719ca000   wsock32    (deferred)             
    719e0000 719f1000   mpr        (deferred)             
    71a00000 71a08000   ws2help    (deferred)             
    71a10000 71a27000   ws2_32   T (no symbols)           
    71a50000 71aa7000   netapi32   (deferred)             
    71ab0000 71b08000   kerberos   (deferred)             
    71d80000 71d84000   security   (deferred)             
    72320000 72326000   ntlsapi    (deferred)             
    72ec0000 72ece000   wzcsapi    (deferred)             
    73ec0000 73ec5000   icmp       (deferred)             
    74420000 744b3000   mlang      (deferred)             
    744c0000 7477e000   msi        (deferred)             
    74cc0000 74cd2000   clusapi    (deferred)             
    75c80000 75d3e000   sxs        (deferred)             
    76080000 76092000   msasn1     (deferred)             
    760a0000 76135000   crypt32    (deferred)             
    76180000 7619d000   imm32      (deferred)             
    761a0000 761ea000   comdlg32   (deferred)             
    76490000 76599000   setupapi   (deferred)             
    765d0000 765dc000   cryptdll   (deferred)             
    765e0000 765f4000   ntdsapi    (deferred)             
    76640000 76667000   schannel   (deferred)             
    76810000 768d4000   userenv    (deferred)             
    76970000 76988000   atl        (deferred)             
    76990000 769be000   winmm      (deferred)             
    76a60000 76a6b000   psapi      (deferred)             
    76a70000 76a9f000   credui     (deferred)             
    76aa0000 76acb000   wintrust   (deferred)             
    76b00000 76b28000   imagehlp   (deferred)             
    76b30000 76b44000   authz      (deferred)             
    76bb0000 76bb5000   wmi        (deferred)             
    76bc0000 76bd9000   mprapi     (deferred)             
    76be0000 76bfa000   iphlpapi   (deferred)             
    76c00000 76c1f000   dhcpcsvc   (deferred)             
    76cb0000 76cd8000   adsldpc    (deferred)             
    76ce0000 76d15000   activeds   (deferred)             
    76d20000 76d2c000   rtutils    (deferred)             
    76d30000 76d42000   rasman     (deferred)             
    76d50000 76d7f000   tapi32     (deferred)             
    76d80000 76dbf000   rasapi32   (deferred)             
    76dc0000 76deb000   dnsapi     (deferred)             
    76df0000 76df8000   wtsapi32   (deferred)             
    76e00000 76e2f000   wldap32  T (no symbols)           
    76e40000 76e53000   secur32    (deferred)             
    76e60000 76e67000   winrnr     (deferred)             
    76e70000 76e75000   rasadhlp   (deferred)             
    76f00000 77093000   comres     (deferred)             
    770a0000 77265000   netshell   (deferred)             
    77340000 77443000   comctl32   (deferred)             
    774f0000 77629000   ole32    T (no symbols)           
    77630000 776b3000   clbcatq    (deferred)             
    776c0000 77702000   netman     (deferred)             
    77790000 777b1000   ntmarta    (deferred)             
    779b0000 779c1000   winsta     (deferred)             
    77b60000 77b68000   version    (deferred)             
    77b70000 77bca000   msvcrt   T (no symbols)           
    77bd0000 77c18000   gdi32      (deferred)             
    77c20000 77cbf000   rpcrt4     (pdb symbols)          
    77cd0000 77d5b000   oleaut32   (deferred)             
    77d70000 77e07000   comctl32_77d70000   (deferred)             
    77e20000 77eb2000   user32     (pdb symbols)          
    77ec0000 77f12000   shlwapi    (deferred)             
    77f30000 77fdb000   advapi32 T (no symbols)           
    7c800000 7c915000   kernel32   (pdb symbols)       
    7c920000 7c9e6000   ntdll    T (no symbols)           
    7c9f0000 7d1f9000   shell32    (deferred)             
    7e020000 7e02f000   samlib     (deferred)
    

Anmelden zum Antworten