Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

23.04.2017, 18:41

Variablen OHNE Breakpoints überwachen

Hallo,

ich habe eine Frage zum Debugger von VisualStudio Professionell 2017.

Ist es möglich, ohne einen Breakpoint zu setzen, Variablen live zu überwachen? Bei meinem Programm tritt nämlich ein Fehler in der Move funktion auf, und ich kann nicht jedes Frame einfach unterbrechen (vor allem ist es nur ein kleines Programm, welches mit über 100 fps läuft). Oder kann man das Programm vielleicht genau dann unterbrechen, wenn man z.B.: eine Taste drückt.

Ich hoffe es kann mir irgendwer helfen.

Grüße
Patrick
Albert Einstein sagte: "2 Stunden mit einem netten Mädchen fühlen sich an wie 20 Minuten, 20 Minuten auf einem heißen Ofen fühlen sich an wie 2 Stunden. - Das ist Relativität"

2

23.04.2017, 20:25

Break bei F11 Tastendruck:

C-/C++-Quelltext

1
2
3
4
if(GetAsyncKeyState(VK_F11) & 0x8000)
{
//hier breakpoint setzen
}


Ich hoffe das hilft dir ein wenig weiter.

Tobiking

1x Rätselkönig

  • Private Nachricht senden

3

23.04.2017, 22:02

Du kannst Breakpoints auch conditions hinzufügen, so dass sie nur beim n-ten Aufruf ausgelöst werden oder wenn eine Variable einen bestimmten Wert hat oder nicht hat etc.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

4

23.04.2017, 22:12

Allerdings sind conditional Breakpoints extrem... schlecht und verlangsamen Code unsagbar. Falls es möglich ist, ist es wesentlich performanter ein zusätzliches IF direkt in den Code zu schreiben und da den Breakpoint zu setzen. Klingt komisch, is aber so. Manchmal kann das ein durchaus brauchbarer Tipp sein.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

5

23.04.2017, 23:41

Weißt du denn ob es bestimmte Werte(bereiche) sind, die dir Probleme bereiten= Gibt es nicht auch eine Funktion mit der man auf Änderung einer Variable prüfen kann? Allerdings weiß ich nicht wie es da mit der Performance ausschaut.
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

6

24.04.2017, 00:02

Alternativ kannst du dir den Wert ja vielleicht auch einfach von deinem Spiel selbst ausgeben lassen. Render ihn einfach in irgendeine Ecke.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

7

24.04.2017, 06:34

Break bei F11 Tastendruck:

C-/C++-Quelltext

1
2
3
4
if(GetAsyncKeyState(VK_F11) & 0x8000)
{
//hier breakpoint setzen
}


Ich hoffe das hilft dir ein wenig weiter.

So weit habe ich gar nicht gedacht. Aber meines Wissens nach, brauchst du nicht überprüfen, ob das 16. Bit gesetzt ist (& 0x8000) Meine Programme funktionieren auch ohne dem. Außerdem glaube ich eher, dass man auf das 8. Bit überprüfen muss (& 0x80) so wie bei DirectX, aber ich kann mich auch täuschen.
Albert Einstein sagte: "2 Stunden mit einem netten Mädchen fühlen sich an wie 20 Minuten, 20 Minuten auf einem heißen Ofen fühlen sich an wie 2 Stunden. - Das ist Relativität"

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

8

24.04.2017, 06:40

Es ging wohl auch eher um's Prinzip als um's Detail.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Schrompf

Alter Hase

Beiträge: 1 470

Wohnort: Dresden

Beruf: Softwareentwickler

  • Private Nachricht senden

9

24.04.2017, 09:55

Ein Conditional Breakpoint pro Frame ist kein großes Problem nach meiner Erfahrung. Alternativ kannst Du auch Watchpoints setzen - Visual Studio nennt sie Data Breakpoints. Dann unterbricht der Debugger das Programm an der Stelle, wo ein Stück Speicher oder eine Variable Deiner Wahl den Wert ändert.

[Edit] Ein einfaches if() reinzuschreiben ist aber auch ne gute Herangehensweise. Visual Studio kann doch Edit&Continue - einfach Breakpoint setzen, if() reinschreiben, weiterlaufen lassen. Dat rockt.
Häuptling von Dreamworlds. Baut aktuell an nichts konkretem, weil das Vollzeitangestelltenverhältnis ihn fest im Griff hat. Baut daneben nur noch sehr selten an der Open Asset Import Library mit.

10

24.04.2017, 18:24

Aber das mit dem IF funkitioniert nicht. Wenn ich einen Breakpoint innerhalb der Klammern der IF-Anweisung setze, verschieb der sich immer nach die IF-Anweisung. Das mit conditional Breakpoints funktioniert auch nicht, da ich dann die Meldung bekomme: GetAsyncKeyState ist nicht definiert.
Albert Einstein sagte: "2 Stunden mit einem netten Mädchen fühlen sich an wie 20 Minuten, 20 Minuten auf einem heißen Ofen fühlen sich an wie 2 Stunden. - Das ist Relativität"

Werbeanzeige