Laden...

Programm scheint beim Debuggen weitere Schritte im Hintergrund auszuführen

Erstellt von Späteinsteiger vor 8 Jahren Letzter Beitrag vor 8 Jahren 1.480 Views
S
Späteinsteiger Themenstarter:in
12 Beiträge seit 2014
vor 8 Jahren
Programm scheint beim Debuggen weitere Schritte im Hintergrund auszuführen

Moin
Ich bin gerade an einem Punkt, an dem ich verzweifel.

Im Web habe ich "A fast CSV.Reader" von Sebastien Lorion gefunden und kämpfe mich dort durch.

Mein Ziel dabei, die Vorgehensweise zu verstehen und mir selbst eine abgespeckte Version zu basteln.
Ich weiß, das es alles Fertig gibt, jedoch soll es für mich mehr zur Übung dienen. Dafür möchte ich das Rad noch mal neu erfinden.

Ich habe meinen Reader soweit, das ich per Indexer auf die Daten zugreifen kann und z.B. einem DataGridView übergeben kann.

Bei der Anweisung:

    string str1 = X[0];
    string str2 = X[1];

liest der Reader allerdings im Hintergrund schon mit jedem Debuggerklick (so scheint es) weitere Datenzeilen ein, obwohl ich von der Programmlogik keine Methode aufrufe, die dazu führt eine neue Zeile einzulesen. Hier ist mein Programm irgendwie schon ein paar Schritte weiter, als ich will.

Hier passiert etwas im Hintergrund, was ich mir nicht erklären kann. Auch im Web finde ich hierfür nur Lösungen, die auf Lock oder Thread basieren.

Da ich mit meinen bescheidenen Kenntnissen hier am Ende bin, brauch ich eure Hilfe.

Wie kann ich diese ungewollte Vorgehensweise verhindern, ohne Lock oder Thread zu verwenden?

Wie erkenne ich Methoden, die Synchron oder Asynchron laufen?

...

Ist mein erster Post in diesem Forum. Also bitte verzeiht mir meine Fehler 😉

Vielen dank im voraus

Der Späteinsteiger

Eigentlich bin ich ganz anders, ich komme nur so selten dazu.

16.842 Beiträge seit 2008
vor 8 Jahren

Benutze den Debugger um Code und dessen Funktionsweise zu verstehen.
[Artikel] Debugger: Wie verwende ich den von Visual Studio?
Du kannst hier ja Schritt für Schritt alles durchgehen. Was ein "Debuggerklick" sein soll, was Du beschreibst, weiß ich aber nicht. Daher weiß ich nicht, ob Du überhaupt richtig debuggst.

Ob eine Methode in einem Thread laufen erkennst Du im Debugger. Es gibt ein Threadfenster in Visual Studio.
Ansonsten siehst Du ja im Code wie eine Methode aufgerufen wird.

S
Späteinsteiger Themenstarter:in
12 Beiträge seit 2014
vor 8 Jahren

Hallo Abt

Ich bin die Codeabschnitte im Einzelschritt durchgegangen und im Überwachungsfenster festgestellt, das hier irgendetwas im Hintergrund passiert.

Wo die Daten verändert werden, habe ich lokalisiert, indem ich dort einen Haltepunkt gesetzt habe. Jedoch verstehe ich nicht, wie mein Programm dort hinkommt.

Eigentlich bin ich ganz anders, ich komme nur so selten dazu.

16.842 Beiträge seit 2008
vor 8 Jahren

Das kannst Du dem Stacktrace entnehmen. Das ist im Debugger Artikel beschrieben.
Du musst aber den Code des CSV Readers einbinden und nicht die DLL. Du kannst hier dann absolut alles, ausnahmslos Schrittweise durchgehen.

S
Späteinsteiger Themenstarter:in
12 Beiträge seit 2014
vor 8 Jahren

Ok Danke Abt

Nun habe ich zumindest mal einen Anhaltspunkt und ein Stichwort, an dem ich wieder ansetzen kann.

Eigentlich bin ich ganz anders, ich komme nur so selten dazu.

795 Beiträge seit 2006
vor 8 Jahren

So wie das in deinem Code-Beispiel aussieht, rufst du einen Indexer X[0] auf. Diese werden (wie Properties auch) beim Debuggen automatisch übersprungen, wenn das entsprechend Konfiguriert wurde. Das kannst du in den Debugger-Einstellungen irgendwo ausstellen.

LG,
Christian.

`There are 10 types of people in the world: Those, who think they understand the binary system Those who don't even have heard about it And those who understand "Every base is base 10"`
S
Späteinsteiger Themenstarter:in
12 Beiträge seit 2014
vor 8 Jahren

Hallo Christian

Hab mit den Einstellungen rumprobiert. Leider ohne Erfolg.

Die .Exe gibt das gleiche Ergebnis wie die gedebuggte Version.

Aber trotzdem vielen dank für Deine Idee.

Stacktrace nun mein Strohhalm 😉

Eigentlich bin ich ganz anders, ich komme nur so selten dazu.

S
Späteinsteiger Themenstarter:in
12 Beiträge seit 2014
vor 8 Jahren

Fehler gefunden...

rekursiver Methodenaufruf gepaart mit [DebuggerNonUserAttribut]

Danke für eure Denkanstöße

Eigentlich bin ich ganz anders, ich komme nur so selten dazu.