Probleme mit PDB Dateien (Symbole)

  • VB.NET
  • .NET (FX) 4.0

Es gibt 24 Antworten in diesem Thema. Der letzte Beitrag () ist von Gelöschter Benutzer.

    Probleme mit PDB Dateien (Symbole)

    Hallo, seit dem Umstieg von VS2010 auf VS2015 gibt es immer wieder Probleme mit den Symboldateien. Ich meinem Projekt werden beim Debuggen Symboldateien aus anderen Projekten geladen. Nun kommt es dazu beim Debuggen zu Sprüngen in anderen Code (womöglich weil die Klassen gleich heißen). Es werden dann Methoden und Eigenschaften nicht gefunden, da dies ja in der gleichnamigen Klasse aus anderen Projekten nicht vorhanden. Ich frage mich wie kommt der Compiler genau auf diese symbole? Wo sind da die Referenzen eingetragen? Ich hab schon alle Projekteinstellungen durchgesucht und auch den Symbolcache geleert, es werden aber immer noch die falschen Symbole geladen. (Sichtbar im Module Fenster)
    Gleiche Namen von Klassen sind immer doof.
    Um die Unterscheidung zu gewährleisten müsstest du den Namespace korrekt angeben.
    Projekt1.KlasseA.FunctionA
    Projekt2.KlasseA.FunctionB
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."
    @gegy Willkommen im Forum. :thumbup:
    Zunächst: Bereinige das Projekt, dann erstelle das Projekt neu.
    Wenn dann immer noch quer auf Code zugegriffen wird, ist wohl das Projekt als solches im Eimer.
    Erstell ein neues Projekt und zieh die Klassen aus dem alten in das neue Projekt.
    Quelldatei(en) im Explorer kopieren, dann zum Projekt hinzufügen.
    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!
    @all
    Vielen Dank für den herzlichen Empfang hier im Forum. :)

    Also ich hab wirklich schon alles zig mal bereinigt und neu erstellen lassen, das Problem ist aber immer noch da.
    Ich habe leider immer wieder Probleme mit den Symboldateien von VS2015. In VS2010 gabs damit noch nie Probleme.

    Bei einem anderen Projekt gibt es ein ähnliches Problem:
    Das urspr. Projekt ist ein VS2010 Projekt. Dieses habe ich zum Debuggen auf einen anderen Rechner kopiert, auf dem VS2013 installiert ist. Nun werden dort die Haltepunkte nicht mehr erreicht, weil keine Symboldatei geladen ist. Und in der Tat, im Module Fenster fehlt die DLL die ich gerade Debuge komplett. Im Ausgabeverzeichnis, wird die Symboldatei aber erstellt und das Projekt steht auch auf der Debug Konfiguration.
    Nun habe ich leider keine Ahnung, wie ich die fehlende Symboldatei nachladen kann, vorallem warum wird sie denn überhaupt nicht geladen und ein Eintrag fehlt komplett in der Module Liste?

    Gelöschter Benutzer schrieb:

    Nun werden dort die Haltepunkte nicht mehr erreicht
    weil die erstellten Dateien nicht kompatibel sind
    oder
    Out Of Date
    oder
    anderer Compiler mit dem Quellcode.
    Bereinige die Projekte von Hand im Explorer.
    Benenne mal die obj- und bin-Verzeichnisse um, dazu darf allerdings keine Entwicklungsumgebung mit diesem Pfad geöffnet sein
    oder
    Lösch die obj-Verzeichnisse,
    lösch die vom Projekt erstellten exen und DLLs im bin-Verzeichnis,
    lösch alle PDB-Dateien,
    oder
    lösch auch das bin-Verzeichnis, allerdings nur dann, wenn da keine externen DLLs und Settings und so drin liegen.
    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!
    Alles gelöscht... gleiches Problem.

    So, nun habe ich ein Experiment gestartet: Ich habe zusätzlich zu VS 2015 noch VS 2010 installiert.
    Ich habe das Projekt mit gleichem Source (unverändert) auch noch in 2010 vorliegen.

    Und was sagt man dazu: Hier werden die Haltepunkte erreicht
    Gleich das Projekt mit 2015 geöffnet... funktioniert nicht. Was stimmt hier nicht??
    Dazu muss es doch irgendwo eine Einstellung oder ähnliches geben? Was hat sich denn hier von 2010 auf 2015 geändert, dass (ohne den code anzugreifen) die Haltepunkte nicht mehr erreicht werden?
    @gegy In welchem Code werden die Haltepunkte nicht mehr erreicht?
    Form / Klasse / DLL
    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!
    Es handelt sich um ein Addin, also eine DLL. Hier werden in keiner Klasse die Haltepunkte mehr erreicht, weil er die Symboldatei nicht ladet.
    Also wenn ich das Module Fenster in 2010 anzeige, ist dort die DLL gelistet, in 2015 aber nicht.

    Gelöschter Benutzer schrieb:

    in 2015 aber nicht.
    Jetzt kommen wir zum Punkt.
    Solch Information gehört zur Fragestellung :!:
    Hast Du die Quellen dieser DLL?
    Wenn ja:
    Hast Du die DLL als DLL dem Hauptprojekt als Verweis hinzugefügt
    oder
    Hast Du das Projekt der DLL dem Hauptprojekt als Verweis hinzugefügt?
    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!

    Gelöschter Benutzer schrieb:

    Das Projekt der DLL ist mein Hauptprojekt.
    Wohl kaum.
    Die Entwicklungsumgebung braucht ein Fenster-Projekt zum Starten, um eine DLL debuggen zu können.
    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!
    Die Entwicklungsumgebung startet die Applikation für die ich die DLL schreibe. Die DLL registriere ich zuvor via Regassm im System, damit die Applikation sie erkennt.
    Starte ich nun das Projekt, wird die Applikation gestartet und ich kann die DLL debuggen. Funktioniert in VS2010 ohne Probleme. Funktioniert auch wenn ich einen neues Addin in 2015 schreibe, funktioniert aber nicht wenn ich das Projekt von VS2010 mit VS2015 öffne und laufen lasse.

    Über die Projekteinstellungen kannst du ja einstellen, dass ein Externes Programm zum Debuggen gestartet wird. ;)
    @gegy Hast Du noch weitere wichtige Informationen, die Du bisher nicht gepostet hast?
    =====
    Sieh Dir mal die Unterschiede vom alten nach 2015 konvertierten Projekt
    und
    einem neuen in 2015 erstellten Projekt an.
    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!
    ​@gegy Hast Du noch weitere wichtige Informationen, die Du bisher nicht gepostet hast?


    Wenn ich genau wüsste, welche Informationen du als Wichtig für die Hilfe empfindest, würde ich dir jede mir mögliche geben. (Quellcode kann ich dir leider nicht geben)

    ​Sieh Dir mal die Unterschiede vom alten nach 2015 konvertierten Projektundeinem neuen in 2015 erstellten Projekt an.


    Ja auch das habe ich im Vorfeld dieses Threads bereits gemacht. Ich habe kleine Unterschiede erkennen können. Habe auch das Projekt soweit angepasst. Das hat leider nichts geholfen.
    Ich habe aufgeräumt, gelöscht, angepasst, etc.... aber leider finde ich genau den kleinen Knoten nicht, der das Laden der Symbole für die DLL (welche ja das eigentliche Projekt ist) verhindert. Und um das nochmal zu erwähnen: Nur in VS 2015, VS 2013. In VS 2010 funktioniert es.

    Erklär mir mal bitte woher VS weiß welche Symbole für das Projekt beim Debuggen geladen werden müssen? Woher weiß VS, dass die pdb Datei aus dem Verzeichnis geladen werden muss wo kompiliert wird?
    @gegy Die PDB-Datei wird vom Studio beim Kompilieren erstellt.
    Sieh Dir mal die Projekteigenschaften im Konfigurationsmanager an. Wird die DLL überhaupt neu erstellt (Haken bei erstellen)?
    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!
    @gegy Schreib mal in den Code ein Debugger.Break() rein, starte die Debug-Variante.
    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!
    So, warte mal. Ich hab nun nochmal alles mögliche Gelöscht. Das ganze bin Verzeichnis erneut gelöscht und auch alle Referenzen (hehe... ja ich brauche auch div. Referenzen) entfernt und wie erneut hinzugefügt. Nun stoppt er bei einem Haltepunkt und die Symboldatei ist auch geladen. Nun muss ich nur noch genau herausfinden wo das Problem liegt, damit ich daraus für zukünftige portierte Projekte was lernen kann.

    Als ergänzende Info: Seltsamerweise funktioniert nun auch das original VS2010 Projekt. Ich versteh die Welt, Visual Studio und vor allem Windows nicht mehr.
    Juhu und wieder das gleiche Problem.
    Er läd die Symboldatei aus einem anderem Projekt. (Obwohl die DLL anders heißt)
    Nun hab ich die Symboldatei im anderen Projekt gelöscht, jetzt kann er sie nicht mehr finden. (Wird im Module Fenster angezeigt)
    Ich werde nicht schlau daraus, woher Visual Studio die Information nimmt, welche Symbol Datei er laden soll für meine DLL. WO BITTE STEHT DAS?? Seufz
    @gegy Welche Inhalte hat denn Deine Projektmappe?
    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!