Debug Symbols



  • Was ist denn ADPlus???
    Und was sind die pdb files?



  • 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....


Anmelden zum Antworten