Schrift
[thread]7555[/thread]

Etwas warten dann Funktion beenden: Mit Zeitschleife abbrechen



<< |< 1 2 >| >> 17 Einträge, 2 Seiten
fritz
 2005-12-20 10:25
#61128 #61128
User since
2005-10-19
44 Artikel
BenutzerIn
[default_avatar]
Hi, habe folgendes Problem.

Ich rufe Funktionen aus einer DLL mittels Perl auf.

Da gibt es auch eine Funktion die auf einen vorher gesetzten Breakpoint laeuft.

Ich moechte gern das ich z.B. 10 sec warte. Sollte er dann noch nicht in den Breakpoint gelaufen sein soll die Ausfuehrung beendet werden.

Hoffe auf eine baldige Antwort
J-jayz-Z
 2005-12-20 10:27
#61129 #61129
User since
2005-04-13
625 Artikel
BenutzerIn
[Homepage] [default_avatar]
Du kannst sleep() in einer Schleife verwenden, jeweils mitzählen, wie oft du gewartet hast und dann beenden
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="5065726c2d436f6d6d756e697479"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'

http://perl-tutor.de
renee
 2005-12-20 10:39
#61130 #61130
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Naja, Du rufst also eine Funktion in einem Perl-Programm auf? Damit Du dann gleichzeitig etwas anderes machen kannst, muesstest Du mit fork() oder aehnlichem arbeiten. Wenn Du
Code: (dl )
1
2
function();
sleep(10);
machst, dann wird das sleep ja erst gemacht, nachdem die Funktion beendet wurde...

Oder habe ich jetzt was falsch verstanden?
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
fritz
 2005-12-20 11:56
#61131 #61131
User since
2005-10-19
44 Artikel
BenutzerIn
[default_avatar]
Das ging aber schnell mit der Antwort.

@renee: du hast das Problem genau erfasst.

In die Funktion selber kann ich leider nicht rein, sprich ich kann darin nichts aendern.
Ich habe lediglich Zugriff auf den Funktionsaufruf.

Leider sagt mir fork() ueberhaupt nichts. Kann mir das wer erklaeren was das ist und wie das funktioniert?
J-jayz-Z
 2005-12-20 12:12
#61132 #61132
User since
2005-04-13
625 Artikel
BenutzerIn
[Homepage] [default_avatar]
perldoc -f fork
Damit kannst du einen neues Prozess starten.
Auf renees Homepage ist auch eine PDF zum thema fork()
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="5065726c2d436f6d6d756e697479"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'

http://perl-tutor.de
esskar
 2005-12-20 12:49
#61133 #61133
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
was ist das für eine dll?
eigentlich kann sie nur in einen break-point laufen, wenn sie im debug-mode compiliert wurde!
oder stürzt sie einfach ab ?
fritz
 2005-12-20 14:17
#61134 #61134
User since
2005-10-19
44 Artikel
BenutzerIn
[default_avatar]
In der DLL befinden sich Funktionen in C die auf einem Microcontroller ausgefuerht werden. Mir ist es moeglich die Funktionen aufzurufen und mittels single step durchzusteppen.
Meiner Meinung nach handelt es sich um eine Release Version, aber wo soll denn da der Unterschied sein, das geht mir noch nicht so recht ein.
esskar
 2005-12-20 14:23
#61135 #61135
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
[quote=fritz,20.12.2005, 13:17]Mir ist es moeglich die Funktionen aufzurufen und mittels single step durchzusteppen.[/quote]
hmm...
wie machst du das denn?
bzw. wie wurde denn da ein break-point reinkompiliert ?
fritz
 2005-12-20 14:30
#61136 #61136
User since
2005-10-19
44 Artikel
BenutzerIn
[default_avatar]
Also zum Ablauf,

Zuerst lade ich auf eine Microcontroller ein Programm ( Blinkprogramm)
Danach setze ich mittels einer Funktion einen Breakpoint. ( Funktion in der DLL )
Jetzt moechte ich mit einer RUN TO BREAKPOINT Funktion auf diesen Breakpoint auflaufen. Das funktioniert auch alles ganz wunderbar.

Wenn ich jetzt aber einen Breakpoint auf eine Adresse setze auf der ueberhaupt kein Statement liegt, laeuft die RUN TO BREAKPOINT
Funktion ewig und der Programmablauf stoppt.
Jetzt moechte ich in so einem Fall diese Funktion abbrechen. Da bei gueltiger Adresse der Breakpoint nach spaetestens 5 sec erreicht wird, will ich nach 10 sec mit dem Programmablauf weitermachen und als Rueckgabe " Breakpoint nicht gefunden " zurueckgeben.

Jetzt hab ich mir gedacht das ich mit dem Child Prozess den aufruf mache und nach Eintreffen im Breakpoint an den Parent eine 1 zurueckgebe.
Der Parent schlaeft 10 sec und fragt dann ab was vom Child gekommen ist und handelt dementsprechend.

Soweit die Theorie, jetzt die Praxis.............................:p
fritz
 2005-12-20 14:36
#61137 #61137
User since
2005-10-19
44 Artikel
BenutzerIn
[default_avatar]
ach und noch was, funkioniert diese Fork funktion ueberhaupt weil ich unter windows programmiere und jetzt schon oefter gelesen habe das es da nicht geht und dann aber doch wieder ohne Probleme funktioniert.
<< |< 1 2 >| >> 17 Einträge, 2 Seiten



View all threads created 2005-12-20 10:25.