VS2012 Breakpoints werden nicht getroffen
Habe ich eine Klasse, die wie folgt aussieht:
public class MyService
{
private MyService(){}
public static string GetStuff()
{
var stuffDid = new MyService();
return stuffDid.DoStuff();
}
private string DoStuff()
{
//do stuff
}
//other private helpers
}
Natürlich habe ich Links viel aus, aber das ist die Allgemeine shell.
Nun, ich habe ein unit-test:
[Test]
public void MyTest()
{
var results = MyService.GetStuff();
}
Ich Haltepunkte in meinem unit-test, und ich kann sehen, dass results
Daten. Jedoch, ich setzen Sie Haltepunkte buchstäblich alles über MyService
und nichts getroffen wird, es sei denn, ich legte Sie auf eine geschweifte Klammer. Was ich nicht verstehen kann, da results
Daten, meine return
Aussagen in MyService
sollte immer der hit, richtig?
Bin ich etwas fehlt? Habe ich völlig vergessen, die grundlegenden Regeln von etwas? Wie kommt es, nichts in MyService
getroffen wird? Und wenn ich manuell Schritt in es mit F11
es nur Hopfen herum und nicht einmal gehen durch jede Zeile, die wie ich erwarten würde. Auch wenn ich Schritt durch manuell Neige ich dazu, Sie zu schlagen, bestimmten code nach sollte ich getroffen haben, die es ursprünglich. Und alle switch
Aussagen scheinen auf Standard was die erste option ist, auch wenn der Wert umgestellt werden, sollte KLAR geben Sie einen anderen case
.
Habe ich auch versucht zu machen MyService
Konstruktor public
und wegnehmen alle static
Methoden, und es immer noch nicht funktioniert.
Bearbeiten:
Meine Tests und die 'Core' - code in der gleichen Lösung, aber verschiedene Projekte(Test
und Core
, beziehungsweise). Andere tests nicht ein Problem haben, schlagen, brechen, Punkte in Core
nur auf dieser bestimmten test(nur test, testen MyService
.
Edit 2:
Habe ich gelöscht meinem PDB-Dateien und gereinigten Lösung. Immer noch nichts.
InformationsquelleAutor der Frage RJP | 2012-12-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einige Ideen.
Debugger.Break()
im code statt einen Haltepunktin VS
Du schon einstellen das Datum auf Ihrem computer? Dies kann wirklich vermasseln Sie einen build-Prozess. Wenn dem so ist, löschen Sie alle Ihre obj/bin-Ordner manuell und neu kompilieren.
InformationsquelleAutor der Antwort Alan
Könnte es sein denn Sie sind nur zu debugging-1-Projekt nicht beide
Test
undCore
Können Sie festlegen, VS zu Debuggen, mehrere Projekte auf einmal, können Sie dies tun, indem Sie
right-click your solution > Properties > Common Properties > StartUp Project
Hier können Sie "Mehrere Startup-Projekte"
Setzen Sie einfach beide
Core
undTest
zu starten. Dies kann Sie lösen Ihr Problem.InformationsquelleAutor der Antwort sa_ddam213
Es stellt sich heraus, das war in Bezug auf die Code-Coverage auf.
Ausschalten behebt das Problem.
Finden Sie heraus, wie deaktivieren Sie die code-Abdeckung durch die unten folgenden link
Deaktivieren Sie die code-coverage
InformationsquelleAutor der Antwort RJP
Ich haben ein sehr spezifischen Szenario ergab sich das scheinbare Problem von "Haltepunkt nicht getroffen".
Da keine anderen Antworten hier bereits erwähnt, will ich hinzufügen, mine in die chance, dass er jemandem helfen, der hatte das gleiche Problem.
Die Lösung, in meinem Fall, war dumm, und mit wie viel LINQ als ich verwenden, ich sollte herausgefunden haben dies früher. Beim ausführen einer Methode zurückgibt, die ein IEnumerable, wo die return-Anweisungen enthalten, innerhalb tatsächlich
yield return
Aussagen, dann ist diese Methode nicht ausgeführt werden, wenn Sie es nennen.Wird es dann tatsächlich ausgeführt werden, beim Aufruf einer anderen Methode aus, die IEnumerable-Objekt, wie
ToList()
oderCount()
. Nur dann wird die Methode ausgeführt und der Haltepunkt erreicht.InformationsquelleAutor der Antwort Nuzzolilo
Nur stellen Sie sicher, dass Sie haben, bauen Sie Ihre assembly mit dem debugger Symbole.
Diese option, muss sein gefüllt mit "full":
Rechten Maustaste Auf das Projekt mit Ihrer code-Datei mit der Haltepunkte nicht angefahren zu werden. Wählen Sie "Eigenschaften".
Nach Projekt-Eigenschaften geöffnet haben, wählen Sie "Build" - tab. Watch out für die "Erweitert..."-Button am unteren Rand der Registerkarte. (In der "Output"-Gruppe")
Klicken Sie auf diese Schaltfläche und wählen Sie "full" für die "Debug-info" - Eigenschaft. Das sollte ein Grund sein für die Haltepunkte nicht angefahren zu werden. Visual studio verwendet die Symbole gespeichert, die in der pdb-Dateien zu finden, die genaue Lage der Bruchstelle. Wenn diese Dateien nicht erstellt, keine Haltepunkte getroffen werden. Vielleicht ist Sie deaktiviert die Erstellung dieser Dateien, um aufzuräumen Ihre Projekt-Datei-Struktur. Dies war eine situation, die ich erkannte, dass ich brauche diese Dateien.
InformationsquelleAutor der Antwort Marco Klein
Ich habe vor kurzem das gleiche problem hatte, und wurde zerschlagen mein Kopf gegen die Wand.
Die Antwort stellte sich heraus, ziemlich dumm: Irgendwie ist mein test-Projekt out-of-sync mit dem Haupt-library-Projekt. Ich baute die debug-Versionen der test-und Bibliothek, aber das test-Projekt kopiert die Bibliothek von der
bin/Release
Ordner. Ich habe gerade neu die Projekt-Referenz-und alles war behoben.P. S. Es war sogar criazier: der debugger ging innerhalb einer library-Funktion, aber irgendwie überlesen einer Zeile in der Mitte.
InformationsquelleAutor der Antwort Ark-kun
Müssen Sie DoStuff statisch.
InformationsquelleAutor der Antwort Sorceri
Dein code zeigt ein "service", welche ausgeführt werden konnte als separater Prozess. Wenn das der Fall ist, können Sie Ihre Baugruppe geladen, so Haltepunkte wäre solide rote Kreise, sondern einer anderen Kopie der assembly, in einem separaten Prozess ausgeführt ist eigentlich Umgang mit den Anforderungen.
InformationsquelleAutor der Antwort Sten Petrov
Das klingt wie die pdb-Dateien sind nicht aktualisiert, in der test-sandbox.
1) stellen Sie Sicher, dass Sie in den debug-Modus.
2) Können Sie versuchen, und beinhalten eine Bereitstellung Element für die pdb-Dateien explizit?
3) Wenn 1 und 2 fehlschlagen , habe ich festgestellt, dass manchmal von visual studio erfordert einen Neustart 🙂
InformationsquelleAutor der Antwort Sundeep Jacob
Reinigen Sie die Lösung und den Wiederaufbau und auch die start-up-Projekt.
Können Sie bitte einen kurzen Blick auf die BUILD - > Configuration Manager, nur um zu wissen was sind die Konfigurations-Eigenschaften eingerichtet sind. Wenn es ist eine Entwicklung, die möglicherweise müssen Sie passen Sie die Projekt-Eigenschaften -> klicken Sie auf " advance setting -> ändern Sie die debug-info 'voll' in [Registerkarte "Ausgabe"].
können Sie auch Folgen Sie Schritt zwei ist es sogar nicht Entwicklung Modus
InformationsquelleAutor der Antwort kausar ahmed
Ich hatte dies zufällig in einem 1 Projekt 25, die waren alle in der gleichen Lösung. Die anderen Projekte geehrt, die Haltepunkte aber diese 1 nicht. Ich entfernt das Projekt aus der Projektmappe (löschen, nicht entladen), die brach alle Verweise zu es und dann kommt es wieder auf die Lösung und das funktionierte!
Wenn das nicht funktioniert, können Sie wollen, um das problem zu reproduzieren Projekt von Grund auf neu und fügen Sie das neue Projekt der Lösung.
Die beste Erklärung, die ich habe, warum das funktionierte abgesehen von pures Glück ist, dass wir migrierten Projekten, die aus einer version von VS an andere viele, viele Male im Laufe der Jahre und vielleicht einer jener Migrationen, die dieses problem verursacht.
InformationsquelleAutor der Antwort Denis
Könnten Sie versuchen, hinzufügen, ein
Thread.Sleep(5000)
imGetStuff
Methode, und verwenden Sie an den Prozess AnhängenVisual Studio - > Tools - > Attach To Process und sehen, ob Haltepunkte unterhalb dieser Linie getroffen wird.
InformationsquelleAutor der Antwort Yakup Ünyılmaz
Wenn es in den release-Modus wechseln Sie in den debug-Modus.
InformationsquelleAutor der Antwort NoobieDude
Ich weiß aus Erfahrung, dass Visual Studio nicht haben eine klare Methode des debugging-Dienste, insbesondere der Windows-Dienste. Versuchen Sie, einige code, um GetStuff um die Ausgabe in eine text-Datei, so dass Sie zumindest wissen, der code ist immer der hit. Bei der Erstellung Dienste, die ich Häufig zurückgreifen auf diese Methode, um zu testen.
InformationsquelleAutor der Antwort vesuvious
Ich lief in ein ähnliches Problem. Es stellte sich heraus, dass für mich, es war eine schlechte migration von VS2010, VS2012 mit der
*.testrunconfig
- Datei. Ich löschte das alte und eine neue, das Problem zu beheben.InformationsquelleAutor der Antwort JG in SD
VS verhält sich genau so, wie du beschrieben hast (nicht schlagen die Haltepunkte, schlagen Sie den code erwarten Sie nicht zu schlagen, wenn Sie Durchlaufen), wenn es verwendet wird .pdb-Datei, die erzeugt wurde unter Verwendung der source code irgendwie anders ist als der code, der verwendet wird beim Debuggen. Ich kann nicht garantieren, dass dies der Fall ist, aber ich habe beobachten können, wie ein solches Verhalten viele Male, wenn ich brauchte, um den Schritt in den code, die geliefert wurde, als eine vorgefertigte Bibliothek generiert wurde gegen eine ältere/andere code mit gleichen Dateinamen/Symbole.
InformationsquelleAutor der Antwort nullop
Vielleicht Ihre
Test
Projekt auf einen älterenCore
binäre, anstatt dieCore
(source code) - Projekt?Versuchen Sie erneut hinzufügen, wird die Referenz in deinem Test-Projekt:
Gehen Sie zu Ihrem
Test
Projekt und entfernen Sie den Verweis auf dieCore
Projekt.Wählen Sie nun den Ordner Verweise, und klicken Sie rechts und wählen Sie im Menü die option zum hinzufügen einer neuen Referenz. Wenn in der Referenz-Manager-dialog, stellen Sie sicher, dass Sie die Auswahl
Solution
und dannProjects
auf der linken Seite. Dann in der Mitte der Referenz-Manager-dialog, wählen Sie (prüfen) derCore
Projekt.Versuchen debugging wieder und sehen, ob das hilft.
InformationsquelleAutor der Antwort chue x
Einige mehr Sachen zu versuchen:
Prüfen, ob die geladene Symbole entsprechen den debuggt ausführbare Datei:
Öffnen Sie ein VS-Eingabeaufforderung und cd in das Verzeichnis wo die ausführbare Datei, die Sie Debuggen befindet.
Dann
dumpbin /PDBPATH:VERBOSE MyServiceExecutable.exe
und überprüfen Sie die Ausgabe für "PDB Alter mismatch" (Ref: http://msdn.microsoft.com/en-us/library/44wx0fef.aspx)Nicht sicher über VS 2012, aber ältere Versionen von VS hatte einen bug, wo die falsche Quelle-Datei angezeigt werden würde, vorausgesetzt, Sie haben zwei source-Dateien in Ihrem Projekt mit den gleichen
Namen, selbst wenn Sie sich in unterschiedlichen Ordnern. So enthält Ihr Projekt eine weitere source-Datei mit dem gleichen Namen, sehen, ob die Umbenennung einer von Ihnen hilft. (Update: Scheint VS 2012 betroffen ist auch.)
InformationsquelleAutor der Antwort afrischke
Dumm, mir das Test-Projekt war nicht set gebaut werden:
InformationsquelleAutor der Antwort Jeremy Thompson
Dieser ist ziemlich verworren :
Stellen Sie sicher, dass Sie nicht zwei virtuelle Verzeichnisse mit verschiedenen App-Pools verweisen auf den gleichen physikalischen Ort auf der Festplatte. Während der Entwicklung ist dies etwas, das kann manchmal passieren, für die Prüfung, oder durch einen Fehler.
Bin ich mir nicht 100% klar auf die Technik, aber ich hatte zwei AppPools und zwei virtuelle Verzeichnisse und kein Haltepunkt wurde nie getroffen, denn ich nehme an, der physische Pfad war irgendwie in IIS zugeordnet/Visual Studio zum anderen "apppool" - und nicht die, die tatsächlich ausgeführt wird.
InformationsquelleAutor der Antwort Simon_Weaver
Ich habe das gleiche Problem. Vielleicht ist meine Lösung wird Ihnen helfen, Ihr problem zu lösen. Nur in der "Attach to Process" für die option "Anfügen" wählen Sie den Wert "Avtomatic: Native code". Beste Grüße.
InformationsquelleAutor der Antwort Pavlo Vons
Ersten Wiederaufbau versuchen Sie Ihr Projekt, indem Sie mit der rechten Maustaste auf das Projekt - > neu erstellen, Wenn das nicht funktioniert, versuchen Sie ein reinigen des Projektes (Rechtsklick auf das Projekt - > clean)
Wenn das nicht funktioniert, überprüfen Sie diese:
Hoffen, dass für Sie arbeitet! (Schritt 6 generiert .pdb-Dateien, diese sind die debugging-Symbole)
InformationsquelleAutor der Antwort Zia Ur Rahman
Debuggen Schritt für Schritt, müssen Sie zwei Dinge tun. Zuerst müssen Sie festlegen, break point, dann müssen Sie den debugger an den Laufenden Prozess, die Ihren code. Wenn Sie IIS Express und Sie haben 64-bit-Computer, dann müssen Sie iisexpress.exe, die Ihren code ausführen. Wenn Sie drücken Sie STRG + ALT + P erhalten Sie auf der auf an den Prozess Anhängen-Fenster. Nach dem anbringen, die Pause sollte getroffen werden, wenn der code übereinstimmt.
InformationsquelleAutor der Antwort Hemant_R_D
In Unit-Tests, war ich nicht zu schlagen, Haltepunkte, und erkannte, dass ich mit der test-und nicht-Debugging testen. An der Spitze der Test-Explorer-Optionen "Alle Ausführen", "Fehler beim Ausführen", "Ausführen Übergeben", etc. Wenn Sie einen test Auszuführen, Haltepunkte werden nicht erreicht. Debuggen, testen, in den Test-Explorer mit der rechten klicken Sie auf den test oder eine Gruppe von tests, und wählen Sie Debug-Ausgewählte Tests.
InformationsquelleAutor der Antwort JKMcF