Unterbrechungsmodus Variablenwerte komfortabel ablesen?
-
- Beiträge: 180
- Registriert: 24.09.2010 10:39
Unterbrechungsmodus Variablenwerte komfortabel ablesen?
Gibt es einen Weg die Werte von Variablen komfortabel abzulesen während man im Unterbrechungsmodus ist? Es geht meistens wenn man mit der Maus über der Variable steht aber das ist mühsam und dauert.
Ich kenne das von VBA, da gab es ein Fenster in dem man Variablen oder Ausdrücke definieren konnte und während der Code unterbrochen war für die Fehlersuche konnte man immer genau sehen welche Werte die Variablen gerade enthielten.
Ich kenne das von VBA, da gab es ein Fenster in dem man Variablen oder Ausdrücke definieren konnte und während der Code unterbrochen war für die Fehlersuche konnte man immer genau sehen welche Werte die Variablen gerade enthielten.
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: Unterbrechungsmodus Variablenwerte komfortabel ablesen?
Debugger - Variablenliste
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

-
- Beiträge: 180
- Registriert: 24.09.2010 10:39
Re: Unterbrechungsmodus Variablenwerte komfortabel ablesen?
Danke... das hatte ich übersehen.
Schade dass er scheinbar nicht auf Strukturdaten zugreifen kann. *c\c kann er zB wohl nicht. Aber trotzdem wird das schon helfen...
Schade dass er scheinbar nicht auf Strukturdaten zugreifen kann. *c\c kann er zB wohl nicht. Aber trotzdem wird das schon helfen...

- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: Unterbrechungsmodus Variablenwerte komfortabel ablesen?
Es kann problemlos auf Strukturierte Variablen zugreifen.SebastianJu2 hat geschrieben:Schade dass er scheinbar nicht auf Strukturdaten zugreifen kann. *c\c kann er zB wohl nicht. Aber trotzdem wird das schon helfen...
Pointer sind keine Variablen. Selbst Schuld wenn Du die für alles nutzt

Dann sollte Dir aber die Memory-Anzeige auch genügen.
PS: wäre reiner Maschinencode für Dich auch eine Alternative?

Gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

-
- Beiträge: 180
- Registriert: 24.09.2010 10:39
Re: Unterbrechungsmodus Variablenwerte komfortabel ablesen?
Assembler schau ich mir irgendwann mal an.
Pointer sind schwer genug erstmal. Ein Fehler und man kann ganz schön suchen. Und wenn ich mir überlege dass Assembler noch kryptischer ist... lass ich davon vermutlich eine Weile die Finger.
Die Speicheranzeige sieht interessant aus.

Die Speicheranzeige sieht interessant aus.
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: Unterbrechungsmodus Variablenwerte komfortabel ablesen?
Maschinencode <> Assembler
Maschinencode ist das, was der Assembler erzeugt, also Assembler ist in diesem Falle die
Hochsprache
Strukturierte Variablen werden intern immer als Pointer übergeben, macht also nur Sinn,
wenn man diesen strukturierten Variablen einen Pointer übergibts, damit dieser strukturiert
ist. In reinem Basic würde man hierfür CopyMemory nehmen.
PS: die ganzen Peeks und Pokes, sowie Memorybefehle solltest Du aus den FF kennen,
bevor Du sinnlose Anti-Beschleunigungen mit Pointer versuchst.
Maschinencode ist das, was der Assembler erzeugt, also Assembler ist in diesem Falle die
Hochsprache

Strukturierte Variablen werden intern immer als Pointer übergeben, macht also nur Sinn,
wenn man diesen strukturierten Variablen einen Pointer übergibts, damit dieser strukturiert
ist. In reinem Basic würde man hierfür CopyMemory nehmen.
PS: die ganzen Peeks und Pokes, sowie Memorybefehle solltest Du aus den FF kennen,
bevor Du sinnlose Anti-Beschleunigungen mit Pointer versuchst.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

-
- Beiträge: 180
- Registriert: 24.09.2010 10:39
Re: Unterbrechungsmodus Variablenwerte komfortabel ablesen?
Warum stört dich das eigentlich so? Ich übe doch nur.
Wie ich die Daten einlese hatte ich ja schon gepostet und jetzt ging es darum die Daten auch wieder raus zu bekommen. Denn das Ganze soll die Zeilen einlesen und dann zB sortieren auf irgendeine Art. Ich dachte da an URLs die ohne Beachtung von http und ww
, subdomains und Pfaden sortiert werden sollten. Also Liste auslesen, bearbeiten und wieder anzeigen.
Ich habe dann erstmal versucht die Liste wieder auszugeben in ein listicongadget. Die Liste bestand aus 230.000 URLs. Das einlesen in die Liste dauerte nur ein paar ms. Ist ja auch kein Wunder da ja nur Pointer gesetzt wurden.
Dann wollte ich normal ausgeben in das listicongadget und das dauerte vielleicht fast eine Minute. Dann hab ich ein 2. editorfeld genommen und mit addgadgetitem gefüllt. das dauerte noch länger da offenbar jedesmal alles neu gefüllt werden musste. Es wurde also während dem Füllen immer langsamer pro Zeile. Da war das listicon schon besser.
Dann versuchte ich das editorgadget auf einmal zu füllen. Also eine Stringvariable genommen und jedes Listenelement addiert. Und das dauerte ebenfalls ewig. Vermutlich weil jedes mal neuer Ram bereitgestellt werden musste.
Und jetzt will ich mal sehen was es ausmacht wenn ich das gleiche mit allocatememory mache, die listeneelemente durchgehe und in den neuen speicher verschiebe. Der Platz dafür ist ja schon am Anfang bereitgestellt. Vielleicht geht das schneller.
Ist alles Experiment...
Wie ich die Daten einlese hatte ich ja schon gepostet und jetzt ging es darum die Daten auch wieder raus zu bekommen. Denn das Ganze soll die Zeilen einlesen und dann zB sortieren auf irgendeine Art. Ich dachte da an URLs die ohne Beachtung von http und ww
, subdomains und Pfaden sortiert werden sollten. Also Liste auslesen, bearbeiten und wieder anzeigen.
Ich habe dann erstmal versucht die Liste wieder auszugeben in ein listicongadget. Die Liste bestand aus 230.000 URLs. Das einlesen in die Liste dauerte nur ein paar ms. Ist ja auch kein Wunder da ja nur Pointer gesetzt wurden.
Dann wollte ich normal ausgeben in das listicongadget und das dauerte vielleicht fast eine Minute. Dann hab ich ein 2. editorfeld genommen und mit addgadgetitem gefüllt. das dauerte noch länger da offenbar jedesmal alles neu gefüllt werden musste. Es wurde also während dem Füllen immer langsamer pro Zeile. Da war das listicon schon besser.
Dann versuchte ich das editorgadget auf einmal zu füllen. Also eine Stringvariable genommen und jedes Listenelement addiert. Und das dauerte ebenfalls ewig. Vermutlich weil jedes mal neuer Ram bereitgestellt werden musste.
Und jetzt will ich mal sehen was es ausmacht wenn ich das gleiche mit allocatememory mache, die listeneelemente durchgehe und in den neuen speicher verschiebe. Der Platz dafür ist ja schon am Anfang bereitgestellt. Vielleicht geht das schneller.
Ist alles Experiment...

-
- Beiträge: 180
- Registriert: 24.09.2010 10:39
Re: Unterbrechungsmodus Variablenwerte komfortabel ablesen?
Das Resultat ist da... es dauert ms das Ganze wieder in einen großen String zu verwandeln mit Zeilenumbrüchen und es in das nächste Editorgadget zu schreiben. Praktisch genauso schnell wie einlesen.
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: Unterbrechungsmodus Variablenwerte komfortabel ablesen?
Aber in der falschen Reihenfolge!SebastianJu2 hat geschrieben:Warum stört dich das eigentlich so? Ich übe doch nur.
Erstmal solltest Du diese Dinge auch in BASIC erledigen können, also mit Peek und Poke,
CopyMemory, MoveMemory usw. bevor Du es mit Pointern erledigst. Dir fehlt einfach
noch das Verständnis dafür, wann Pointer überhaupt nur einen Sinn machen.
Dein Verständis für Strukturen ist auch noch zu eingeschränkt. Zeig mir mal bitte eine
einfache Procedure, der ich einen String ByRef übergebe.
Und solange Du nicht erkennst, wo Pointer etwas bescheunigen könnten, solltest
Du diese meiden wie die Pest, weil die machen den Code schwer lesbar und entsprechen
nicht den Richtlinien der strukturierten Programmierung. Pointer sind eine schöne Sache,
in einigen seltenen Fällen, wenn man genau weiss, was man macht und das lernste nicht
durch Üben.
PS: Zu Deinem sinnlosen EditorGadget Beispiel:
EditorGadget unterstützt GetGadgetItemText(), lässt sich also ohne Umwege, Zeile für
Zeile in eine List übertragen, und das schneller als mit Pointern

PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

-
- Beiträge: 180
- Registriert: 24.09.2010 10:39
Re: Unterbrechungsmodus Variablenwerte komfortabel ablesen?
Mit Peek und Poke? Aber das sind doch gerade Befehle die Pointer als Argumente brauchen.Erstmal solltest Du diese Dinge auch in BASIC erledigen können, also mit Peek und Poke,
CopyMemory, MoveMemory usw. bevor Du es mit Pointern erledigst. Dir fehlt einfach
noch das Verständnis dafür, wann Pointer überhaupt nur einen Sinn machen.
Dein Verständis für Strukturen ist auch noch zu eingeschränkt. Zeig mir mal bitte eine
einfache Procedure, der ich einen String ByRef übergebe.
Code: Alles auswählen
Procedure.s test(*string.String)
Debug PeekS(*string)
ProcedureReturn "Proc fertig"
EndProcedure
string2.s = "Hallo"
Debug test(@string2)
Es müssen aber alle Daten zusammen sein weil man mit ihnen arbeiten muss (sortieren usw) und dann erst wieder dem User zur Verfügung stellt. Und ob das wirklich schneller wäre als wie es jetzt ist wage ich zu bezweifeln. Ich teste es jetzt aber...EditorGadget unterstützt GetGadgetItemText(), lässt sich also ohne Umwege, Zeile für
Zeile in eine List übertragen, und das schneller als mit Pointern