Frage zu PDB Dateien in Projekten

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 13 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Frage zu PDB Dateien in Projekten

    Hallo Community,

    ich arbeite nun schon seit gut einem Jahr mit VisualStudio (mittlerweile 2017) regelmäßig und komme auch immer besser voran (kleinere bis mittlere Erfolge, etc.).

    Über ein Thema habe ich mich bislang noch nicht wirklich befasst. PDB Dateien - also ich weiß in etwa wofür diese da sind (Projketinformationen, Debuginformationen, Exceptioninformationen), aber mir stellen sich da noch einige Fragen:
    • Kann ich die PDB-Dateien auch einfach weglassen aus einem Projekt?
    • Wenn ich diese weglasse, kann ich die Exceptions dann noch vernünftig behandeln?
    • Wenn ich sie nicht weglassen kann, kann ich die PDB-Dateien in die .exe, .dll, etc. hineinkompilieren?

    Vielleicht hat noch jemand grundsätzliche Informationen zu PDB-Dateien. Wäre super und voraus vielen Dank!

    Bis dahin viele Grüße
    Toorms

    VB1963 schrieb:

    Ja - die kannst du weglassen.
    Hat aber dann bei einer unvorhergesehenen Exception keine Infos davon...


    Danke für deine Info. Wird denn aber noch der gesamte Stacktrace übermittelt, wenn ich die PDB weglasse (Wenn ich z.B. die Fehlermeldung in einen Eventlog schreiben möchte) oder wird das dann irgendwie gekürzt?
    @Toorms Das ist die Program Data Base, da sind Infos drinne, um Dir beim Debuggen die richtigen Informationen anzeigen zu können, also Zusammenhänge zwischen der Exe-Datei und den Quellen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    ErfinderDesRades schrieb:

    VB1963 schrieb:

    Es werden keine Fehlerzeilen mehr angezeigt, wo die Exceptions ausgelöst wurden...
    Was wird dann angezeigt - im Falle eines Fehlers?

    Vorschlag an den TE: Probiers aus, und sag dus uns!


    Gerne doch. Wie im Folgendem zu sehen ist, wird, wie schon vermutet, nur angezeigt in welcher Datei die Exception ausgelöst wird und von welchem Typ diese kommt.

    @Toorms So lange Du in der Entwicklungsumgebung debuggst, ist die Datei sowieso da.
    Wen Du sie rausgibst, sollte die Exe so gut getestet sein, dass nur noch sehr selten eine Exception auftritt.
    Da wäre ggf. ein globaler Exceptionhandler mit ordentlichem Protokoll angesagt.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    VB1963 schrieb:

    Es werden keine Fehlerzeilen mehr angezeigt, wo die Exceptions ausgelöst wurden...
    Ja ist unglücklich ausgedrückt - da meine ich die Angabe der Fehlerzeilen vom Projekt...

    mit .pdb-Datei
    Informationen über das Aufrufen von JIT-Debuggen
    anstelle dieses Dialogfelds finden Sie am Ende dieser Meldung.

    ************** Ausnahmetext **************
    System.OverflowException: Die arithmetische Operation hat einen Überlauf verursacht.
    bei Form1.Button1_Click(Object sender, EventArgs e) in F:\_Test\___BlaBlaBla\___BlaBlaBla\Form1.vb:Zeile 17.
    bei System.Windows.Forms.Control.OnClick(EventArgs e)
    bei System.Windows.Forms.Button.OnClick(EventArgs e)
    bei System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
    bei System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
    bei System.Windows.Forms.Control.WndProc(Message& m)
    bei System.Windows.Forms.ButtonBase.WndProc(Message& m)
    bei System.Windows.Forms.Button.WndProc(Message& m)
    bei System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

    ************** Geladene Assemblys **************
    mscorlib
    Assembly-Version: 4.0.0.0.
    Win32-Version: 4.6.1099.0 built by: NETFXREL4STAGE.
    CodeBase: file:///C:/Windows/Microsoft.NET/Framework64/v4.0.30319/mscorlib.dll.
    ----------------------------------------
    ___BlaBlaBla
    Assembly-Version: 1.0.1453.6393.
    Win32-Version: 1.0.1460.6393.
    CodeBase: file:///F:/_Test/___BlaBlaBla/___BlaBlaBla/bin/Release/___BlaBlaBla.exe.
    ----------------------------------------
    usw.

    ohne .pdb-Datei
    Informationen über das Aufrufen von JIT-Debuggen
    anstelle dieses Dialogfelds finden Sie am Ende dieser Meldung.

    ************** Ausnahmetext **************
    System.OverflowException: Die arithmetische Operation hat einen Überlauf verursacht.
    bei Form1.Button1_Click(Object sender, EventArgs e)
    bei System.Windows.Forms.Control.OnClick(EventArgs e)
    bei System.Windows.Forms.Button.OnClick(EventArgs e)
    bei System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
    bei System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
    bei System.Windows.Forms.Control.WndProc(Message& m)
    bei System.Windows.Forms.ButtonBase.WndProc(Message& m)
    bei System.Windows.Forms.Button.WndProc(Message& m)
    bei System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

    ************** Geladene Assemblys **************
    mscorlib
    Assembly-Version: 4.0.0.0.
    Win32-Version: 4.6.1099.0 built by: NETFXREL4STAGE.
    CodeBase: file:///C:/Windows/Microsoft.NET/Framework64/v4.0.30319/mscorlib.dll.
    ----------------------------------------
    ___BlaBlaBla
    Assembly-Version: 1.0.1453.6393.
    Win32-Version: 1.0.1460.6393.
    CodeBase: file:///F:/_Test/___BlaBlaBla/___BlaBlaBla/bin/Release/___BlaBlaBla.exe.
    ----------------------------------------
    usw.

    RodFromGermany schrieb:

    @Toorms So lange Du in der Entwicklungsumgebung debuggst, ist die Datei sowieso da.
    Wen Du sie rausgibst, sollte die Exe so gut getestet sein, dass nur noch sehr selten eine Exception auftritt.
    Da wäre ggf. ein globaler Exceptionhandler mit ordentlichem Protokoll angesagt.


    Das ist eine sehr vernünftige Einstellung! Einen Globalen Error Handler schreibe ich mir schon immer bei größeren Projekten.
    @Toorms Es ist nicht erdforderlich, dass Du Deine Posts mit einem Vollzitat beginnst, das mögen wir hier nicht. ;)
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Vielen Dank für den Hinweis und eure Informationen zu dem Thema. - Habe auch nochmal mit einem Entwickler gesprochen, welcher schon lange mit VB schreibt. Er meinte auch, dass pdb-Dateien normalerweise bei einem fertigen Produkt nicht mit übergeben werden und das ErrorHandling dann quasi "fertig" sein muss (Teufel ist ja bekanntlich ein Eichhörnchen).

    Toorms schrieb:

    nicht mit übergeben werden
    Das ist korrekt.
    Zum Debuggung, zur Fehlersuche sind sie unerlässlich, das passiert aber gewöhnlich im Headquarter der Entwicklung.
    Wenn eine Installation erstellt wird, sind PDB-Dateien nicht dabei.
    Allerdings kann es vorkommen, dass zur Identifizierung von Fehlern beim Kunden auch mal eine PDB-Datei mit kopiert wird, das macht sich bei Fernwartung über TeamViewer ganz gut, insbesondere, wenn der Fehler reproduzierbar ist.
    =====
    Natürlich muss die PDB diejenige sein, die gemeinsam mit der Exe erstellt wurde.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „RodFromGermany“ ()