Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   
Forentreff 2012     
Bücher-Shop mit Amazon (Buchkategorien)C++ : Referenzen zu C++ : C++ Builder : Visual C++ : C# : Java : Spieleprogrammierung : Systemprogrammierung Linux : Software-Entwicklung : .NET : Compilertechnik : Algorithmen & Datenstrukturen : Objektorientierung : Entwurfsmuster : UML : eXtreme Programming : Scrum : Projektmanagement : Software-Testing : Datenbanken : Tom DeMarco : Dilbert : User Friendly
C/C++ Forum :: Rund um die Programmierung ::  simulation eines langsamen rechners     Zeige alle Beiträge auf einer Seite Auf Beitrag antworten
Autor Nachricht
mael15
Mitglied

Benutzerprofil
Anmeldungsdatum: 04.01.2009
Beiträge: 180
Beitrag mael15 Mitglied 17:36:28 02.02.2012   Titel:   simulation eines langsamen rechners            Zitieren

hallo,

ich habe das problem, dass mein c++ programm auf meinem entwicklungsrechner stabiler läuft als auf einem anwendungsrechner. es ist zu umständlich, mein programm häufig auf dem anwendungsrechner neu zu installieren um verbesserungen zu testen.
kann ich irgendwie auf dem entwicklungsrechner die leistung des anwendungsrechners simulieren? am optimalsten wäre eine drosselung nur für mein programm zum debuggen.

entwicklungsrechner:
i7-2760QM @ 2,4GHz
16GB RAM
Win7 Enterprise

anwendungsrechner:
core2duo @ 2,0 GHz
2GB RAM
WinXP Professional

Danke!
_matze
Mitglied

Benutzerprofil
Anmeldungsdatum: 31.07.2007
Beiträge: 9602
Beitrag _matze Mitglied 17:39:26 02.02.2012   Titel:              Zitieren

Wäre es nicht sinnvoller zu schauen, warum das Programm "instabil" und scheinbar abhängig von der Leistung des Rechners ist? Vielleicht liegt es ja auch gar nicht an der Leistung (ist bislang nur eine Vermutung, oder?). Ich würde mal eine ausgiebige Remote Debugging Session empfehlen. Vielleicht kannst du den Fehler ja lokalisieren und dafür sorgen, dass dein Programm stabil ist, unabhängig vom verwendeten Rechner.

_________________
Wie viele atheistische Babys hat man schon aus Versehen - oder gar mit Absicht! - getauft?
mael15
Mitglied

Benutzerprofil
Anmeldungsdatum: 04.01.2009
Beiträge: 180
Beitrag mael15 Mitglied 17:42:43 02.02.2012   Titel:              Zitieren

ja, danke, remote debugging ist natürlich eine option. ich wäre aber gerne unabhängig vom anwendungsrechner, da ich öfter mal unterwegs programmiere bzw an unterschiedlichen standorten.
SeppJ
Moderator

Benutzerprofil
Anmeldungsdatum: 10.06.2008
Beiträge: 13604
Beitrag SeppJ Moderator 17:55:45 02.02.2012   Titel:              Zitieren

mael15 schrieb:
ich wäre aber gerne unabhängig vom anwendungsrechner, da ich öfter mal unterwegs programmiere bzw an unterschiedlichen standorten.
Gerade deswegen, wäre es doch angebracht, ein fehlerfreies Programm zu haben. Dein Fehler klingt von der Beschreibung her nach einer Racing Condition. Das ist nie richtig, du hast auf deinem Entwicklungsrechner bloß Glück.
mael15
Mitglied

Benutzerprofil
Anmeldungsdatum: 04.01.2009
Beiträge: 180
Beitrag mael15 Mitglied 18:29:32 02.02.2012   Titel:              Zitieren

ich denke auch, dass es eine racing condition ist. ich versuche auch schon mit mutexes und critical sections entgegen zu steuern, nur kann ich eben auf dem entwicklungsrechner schlecht feststellen, ob ich das problem behoben habe, weil das programm dort nicht abstürzt. deswegen brauche ich ja die drosselung der leistung, damit abstürze auftreten wenn das problem immer noch nicht behoben ist.

also scheint es keine brauchbare möglichkeit zu geben, die leistung des entwicklungsrechners der des anwendungsrechners anzupassen?
DirkB
Unregistrierter




Beitrag DirkB Unregistrierter 18:32:32 02.02.2012   Titel:              Zitieren

Sicher, das es an der Geschwindigkeit liegt?
Es kann auch an mangelnden Resourcen liegen.

Mach doch eine Virtuelle Maschine.
pyhax
Mitglied

Benutzerprofil
Anmeldungsdatum: 22.11.2011
Beiträge: 581
Beitrag pyhax Mitglied 18:44:17 02.02.2012   Titel:              Zitieren

Um was für ein Programm handelt es sich denn?

_________________
Ich kann (teilweise): C++, Python, Java(ist lange her), PHP, D (Anfänger)
Marc++us
Administrator

Benutzerprofil
Anmeldungsdatum: 05.04.2000
Beiträge: 17122
Beitrag Marc++us Administrator 10:14:11 03.02.2012   Titel:              Zitieren

Würde ich auch sagen: virtuelle Maschine aufsetzen. Die kannst Du ja beliebig runterdrosseln...

Btw: das ist ein altes Lied schon seit Uhrzeiten... die Entwickler haben immer Powermaschinen und bemerken nie, was der Anwender für ein Leid zu tragen hat auf seinem System. Am besten auch noch 1GBit-Anbindung an den Server. Und der Anwender mit seiner GPRS-Verbindung wundert sich dann über die lahme Reaktion seines Programms...

_________________
Viele Grüße
Marc++us
C++.de
muemmel
Mitglied

Benutzerprofil
Anmeldungsdatum: 16.10.2007
Beiträge: 1559
Beitrag muemmel Mitglied 11:08:15 03.02.2012   Titel:              Zitieren

Hi,

ich hab für die Anwendungen die ich an die Nutzer Rausgebe noch einen steinalten Laptop mit Win-XP und 64 MByte Hauptspeicher (nicht verlesen, wirklich 64 MB) und erst wenn ein Programm auch darauf noch läuft gebe ich es raus.
Man glaubt gar nicht, wie viele noch mit solchen alten Möhren arbeiten. Da ist es gut, noch so ne Kiste da zu haben um das vorher zu testen.

Gruß Mümmel

_________________
Muemmel ante portas
mael15
Mitglied

Benutzerprofil
Anmeldungsdatum: 04.01.2009
Beiträge: 180
Beitrag mael15 Mitglied 12:05:51 03.02.2012   Titel:              Zitieren

danke für eure vielen anregungen!

DirkB schrieb:
Sicher, das es an der Geschwindigkeit liegt?
Es kann auch an mangelnden Resourcen liegen.
Mach doch eine Virtuelle Maschine.

mangelnde resourcen würden auch infrage kommen, eine virtuelle maschine werden ich mal versuchen.

pyhax schrieb:
Um was für ein Programm handelt es sich denn?

das programm sammelt daten über einen a/d wandler von national instruments, speichert sie in einem buffer und stellt sie dann auf dem bildschirm dar. da das mit unterschiedlichen threads läuft könnte es dabei zu einer race condition kommen, ich prüfe das gerade.

muemmel schrieb:
Man glaubt gar nicht, wie viele noch mit solchen alten Möhren arbeiten. Da ist es gut, noch so ne Kiste da zu haben um das vorher zu testen.

die problematik war mir bisher neu, weil ich nur zum firmeninternen einsatz programmiere und auch die einsatzrechner alle kenne. aber irgendwann soll mein programm auch in die weite welt, dafür werde ich wohl in zukunft auch immer auf minimalen rechnern testen.

danke!
rapso
Moderator

Benutzerprofil
Anmeldungsdatum: 17.06.2002
Beiträge: 7283
Beitrag rapso Moderator 16:06:31 03.02.2012   Titel:              Zitieren

ich erstelle dazu ein paar threads die nur loopen, alle threads (sammt main thread) werden per thread affinity mask an einen core gebunden und dann laeuft dieses eine program langsam.

_________________
Kilo Byte=1000,Kilobyte=1024 ANSI/IEEE Standard 1084-1986
rapso
-Mod im Spiele-/Grafikprogrammierung| rapsoo@hotmail.com | #dionysos irc.quakenet.org | amazon stole my PS3 :(
Dobi
Mitglied

Benutzerprofil
Anmeldungsdatum: 24.03.2006
Beiträge: 350
Beitrag Dobi Mitglied 16:17:09 03.02.2012   Titel:              Zitieren

Falls du auch mit künstlicher Bremse bei dir nix findest, kannst du dein Programm vielleicht dazu bringen, einen core dump auf die Platte zu schreiben wenn es abkachelt. Den kannst du dir dann gemütlich bei dir im Debugger angucken. Wenn der call stack vernünftig aussehen soll, reduzierst du das Optimierungslevel in der Hoffnung, dass es dann trotzdem noch knallt. ;)
Bitte ein Bit
Mitglied

Benutzerprofil
Anmeldungsdatum: 24.10.2007
Beiträge: 828
Beitrag Bitte ein Bit Mitglied 17:06:53 03.02.2012   Titel:              Zitieren

Du kannst ja auch mal den ApplicationVerifier ausprobieren. Der kann soweit wie ich weis eine Low Resource Simulation machen und dabei gleichzeitig auf Fehler (Locks, ...) prüfen.
mael15
Mitglied

Benutzerprofil
Anmeldungsdatum: 04.01.2009
Beiträge: 180
Beitrag mael15 Mitglied 17:16:38 03.02.2012   Titel:              Zitieren

Bitte ein Bit schrieb:
Du kannst ja auch mal den ApplicationVerifier ausprobieren. Der kann soweit wie ich weis eine Low Resource Simulation machen und dabei gleichzeitig auf Fehler (Locks, ...) prüfen.


gute idee! leider startet mein programm dann garnicht mehr und beim debuggen wird keine stelle meines quellcodes ausgegeben.

Dobi schrieb:
Falls du auch mit künstlicher Bremse bei dir nix findest, kannst du dein Programm vielleicht dazu bringen, einen core dump auf die Platte zu schreiben wenn es abkachelt. Den kannst du dir dann gemütlich bei dir im Debugger angucken. Wenn der call stack vernünftig aussehen soll, reduzierst du das Optimierungslevel in der Hoffnung, dass es dann trotzdem noch knallt. ;)


ich kann dir leider nicht ganz folgen. schnelles googeln hat mich auch nciht weiter gebracht. hast du einen link, damit ich mich darin einlesen kann?
Bitte ein Bit
Mitglied

Benutzerprofil
Anmeldungsdatum: 24.10.2007
Beiträge: 828
Beitrag Bitte ein Bit Mitglied 18:27:09 03.02.2012   Titel:              Zitieren

Dranbleiben !

Konfiguriere den Application Verifier mal nur mit den Standardeinstellungen und überprüfe damit deine Debug-Version. Starte dein Program aus der IDE (hoffentlich VS) heraus. Sollte nun irgentein Absturz erfolgen, wird die IDE direkt an die Stelle springen, bloß du musst dazu nur den richtigen Thread finden, denn offenbar laufen gerne andere Threads in einem Program, ohne das man diese selbst programmiert hätte.


Zuletzt bearbeitet von Bitte ein Bit am 18:27:37 03.02.2012, insgesamt 1-mal bearbeitet
mael15
Mitglied

Benutzerprofil
Anmeldungsdatum: 04.01.2009
Beiträge: 180
Beitrag mael15 Mitglied 18:37:47 03.02.2012   Titel:              Zitieren

yo, ich programmiere mit vsPro.
wenn ich auch noch alle basic test ausschalte, dann startet das programm tatsächlich. nur ist der output leider bei jedem crash ein anderer.

ich verstehe nicht, was du damit meinst:
Bitte ein Bit schrieb:
bloß du musst dazu nur den richtigen Thread finden


alternativ bin ich noch gerade dabei, virtual pc für mein programm einzurichten. dort kann ich dann zumindest die größe des RAM einstellen. kann ich im application verifier noch finetunen, was mit "low resource simulation" genau gemeint ist?
Dobi
Mitglied

Benutzerprofil
Anmeldungsdatum: 24.03.2006
Beiträge: 350
Beitrag Dobi Mitglied 18:56:59 03.02.2012   Titel:              Zitieren

mael15 schrieb:
Dobi schrieb:
Falls du auch mit künstlicher Bremse bei dir nix findest, kannst du dein Programm vielleicht dazu bringen, einen core dump auf die Platte zu schreiben wenn es abkachelt. Den kannst du dir dann gemütlich bei dir im Debugger angucken. Wenn der call stack vernünftig aussehen soll, reduzierst du das Optimierungslevel in der Hoffnung, dass es dann trotzdem noch knallt. ;)

ich kann dir leider nicht ganz folgen. schnelles googeln hat mich auch nciht weiter gebracht. hast du einen link, damit ich mich darin einlesen kann?

http://www.c-plusplus.de/forum/261827
Das kannst du dir ja auch hübsch irgendwo hinpacken, damit du es in verschiedenen Programmen wiederverwenden kannst. Zum Testen schreibst du am besten etwas, das absichtlich scheppert und schaust an, ob du mit dem dadurch entstandenen dump und deinem Debugger etwas anfangen kannst. Vor zwei Wochen hab ich mit der Methode nen Bug in einem uralten (leider auch großen und chaotischen) Programm von uns gefunden, der natürlich nur beim Kunden und auch nur bei einem speziellen auftauchte. Am Ende wars dann auch ein Sync-Fehler zwischen zwei Threads, wodurch einer dann mit nem Zeiger rumhantiert hat, der irgendwo ins Nirvana schaute.


Zuletzt bearbeitet von Dobi am 19:03:53 03.02.2012, insgesamt 1-mal bearbeitet
hustbaer
Mitglied

Benutzerprofil
Anmeldungsdatum: 27.10.2006
Beiträge: 13529
Beitrag hustbaer Mitglied 19:21:47 03.02.2012   Titel:              Zitieren

mael15 schrieb:
Dobi schrieb:
Falls du auch mit künstlicher Bremse bei dir nix findest, kannst du dein Programm vielleicht dazu bringen, einen core dump auf die Platte zu schreiben wenn es abkachelt. Den kannst du dir dann gemütlich bei dir im Debugger angucken. Wenn der call stack vernünftig aussehen soll, reduzierst du das Optimierungslevel in der Hoffnung, dass es dann trotzdem noch knallt. ;)


ich kann dir leider nicht ganz folgen. schnelles googeln hat mich auch nciht weiter gebracht. hast du einen link, damit ich mich darin einlesen kann?

http://www.codeproject.com/Articles/1934/Post-Mortem-Debugging-Your-Application-with-Minidu

Die dort enthaltenen Infos/Tips wie man es macht zum Debuggen die passenden .pdb Files zur Verfügung zu haben finde ich allerdings nicht gut.
Dafür gibt es Source Server/Symbol Server.

_________________
"Let there be Licht..." http://lichttools.sourceforge.net/
Sehr cooles ASCII Spiel (leider nicht von mir): ASCII-Scramble - http://www.roskakori.at/ascii/
Dobi
Mitglied

Benutzerprofil
Anmeldungsdatum: 24.03.2006
Beiträge: 350
Beitrag Dobi Mitglied 19:31:41 03.02.2012   Titel:              Zitieren

Die pdbs müssen doch nicht beim Kunden liegen. Ich hab mir die einfach zusammen mit der Exe und den Sourcen vom Zeitpunkt, an dem ich die core-dump-schreibende Version kompiliert hab, irgendwo hinkopieren und wieder ausgraben als der Dump da war. Ab da waren es dann ja nur noch drei Klicks.
mael15
Mitglied

Benutzerprofil
Anmeldungsdatum: 04.01.2009
Beiträge: 180
Beitrag mael15 Mitglied 19:39:14 03.02.2012   Titel:              Zitieren

danke dobi und hustbaer, die beiden links habe ich kurz überflogen und sie sehen sehr vielversprechend aus. umsetzen werde ich das auf jeden fall nächsten montag. schönes wochenende!
hustbaer
Mitglied

Benutzerprofil
Anmeldungsdatum: 27.10.2006
Beiträge: 13529
Beitrag hustbaer Mitglied 22:09:47 03.02.2012   Titel:              Zitieren

Dobi schrieb:
Die pdbs müssen doch nicht beim Kunden liegen.

Hat denn jemand behauptet dass die beim Kunden liegen müssten?

_________________
"Let there be Licht..." http://lichttools.sourceforge.net/
Sehr cooles ASCII Spiel (leider nicht von mir): ASCII-Scramble - http://www.roskakori.at/ascii/
Dobi
Mitglied

Benutzerprofil
Anmeldungsdatum: 24.03.2006
Beiträge: 350
Beitrag Dobi Mitglied 22:15:09 03.02.2012   Titel:              Zitieren

Sorry, hatte gedacht, dass du das meinst, weil ich sonst nicht wüsste, was an denen stören sollte. Dann hat man die halt irgendwo rumliegen. Speicherplatz ist billig und Arbeitszeit fürs Bugsuchen teuer. ;)
hustbaer
Mitglied

Benutzerprofil
Anmeldungsdatum: 27.10.2006
Beiträge: 13529
Beitrag hustbaer Mitglied 22:39:25 03.02.2012   Titel:              Zitieren

Ja klar Speicherplatz billig und Zeit teuer.

Gerade weil die Zeit teuer ist, hab ich aber keinen Bock wenn ein Crash-Dump File dahergeflattert kommt, jedes mal manuell die passenden Kopien der Binaries und PDB Files zu suchen. Und dann noch die exakten Source Files mit denen der Spass gebaut wurde.

Also PDB Files mit Source-Server indizieren, und mitsamt den Binaries in einen Symbol-Store packen.

Dann beschränkt sich der Aufwand auf ... naja, genau nix. D.h. du machst das PDB File in Visual Studio auf, und den Rest erledigt VS.
D.h. es sucht sich erstmal die passenden PDB Files und Binaries aus dem Symbol Store, und wenn man irgendwo in den Callstack rein-doppelklickt, dann zieht sich Visual Studio noch automatisch die exakten Versionen der Source-Files aus dem jeweiligen Versionskontrollsystem.

_________________
"Let there be Licht..." http://lichttools.sourceforge.net/
Sehr cooles ASCII Spiel (leider nicht von mir): ASCII-Scramble - http://www.roskakori.at/ascii/
Dobi
Mitglied

Benutzerprofil
Anmeldungsdatum: 24.03.2006
Beiträge: 350
Beitrag Dobi Mitglied 22:51:11 03.02.2012   Titel:              Zitieren

Ja ok, so ists natürlich wesentlich eleganter. Da ich sowas zum Glück bisher nur sehr selten brauchte, war das Wegkopieren des gesamten Entwicklungs-Verzeichnis' kein Problem. Hat mir auch nur paar Sekunden Klick-Arbeit zusätzlich beschert, genau wie danach wenn die dumps reinkamen. :)
...,
Unregistrierter




Beitrag ..., Unregistrierter 01:36:09 05.02.2012   Titel:              Zitieren

Du könntest auch Norton AntiVirus installieren, dann ist dein Rechner auf jeden Fall schön lahm.
ACK0r
Unregistrierter




Beitrag ACK0r Unregistrierter 09:23:36 05.02.2012   Titel:              Zitieren

..., schrieb:
Du könntest auch Norton AntiVirus installieren, dann ist dein Rechner auf jeden Fall schön lahm.

:D:live:
ehrlich
Unregistrierter




Beitrag ehrlich Unregistrierter 09:46:53 05.02.2012   Titel:              Zitieren

mael15 schrieb:
das programm sammelt daten über einen a/d wandler von national instruments, speichert sie in einem buffer und stellt sie dann auf dem bildschirm dar. da das mit unterschiedlichen threads läuft könnte es dabei zu einer race condition kommen
Das hört sich ja nicht gerade nach einem komplizierten Programm an. Da würde ich einfach mal mit dem Hirn debuggen empfehlen. Einfach mal überlegen, wo Threads auf gemeinsame Daten zugreifen und Schritt für Schritt im Kopf durchgehen, ob es irgendwo Konflikte gibt. Dazu sollte man natürlich wissen, was man mit gemeinsamen Daten machen darf, aber das weißt du hoffentlich, wenn du Threads verwendest. Außerdem könnte es auch noch an viel trivialeren sachen liegen, wie dass du z.B. über deinen Buffer hinaus schreibst.
C/C++ Forum :: Rund um die Programmierung ::  simulation eines langsamen rechners   Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info, www.c-sar.de, www.c-plusplus.net und www.baeckmann.de enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.