Herrausfinden in Welcher Funktion sich der Programmzeiger befindet!!
-
Warum nimmst du nicht nen Debugger?
Und wie soll das den mit Multiprozessorrchnern aussehen?
:xmas2: :xmas2: :xmas2: :xmas2: :xmas2: :xmas2: <<<<< :xmas1:
-
Da jeder Thread zu jedem Zeitpunkt in genau einer Funktion sein kann, sehe ich da kein Problem.
Beim VC++ gibts das nette __FUNCTION__ Makro, würde ich bei dem auf jeden Fall verwenden, dann stimmt der Name immer, auch wenn du die Funktion mal umbenannt hast.
-
Genau und wenn zwei Threads gleichzeitig in current_func schreiben, dann gibts auch keine Probleme.

Gibts den keine Pros mehr auf dieser Welt :xmas2:
-
LustigLustig schrieb:
Genau und wenn zwei Threads gleichzeitig in current_func schreiben, dann gibts auch keine Probleme.

Gibts den keine Pros mehr auf dieser Welt :xmas2:
Wenn du auch nur für zwei Sekunden nachgedacht hättest, hättest du erkannt das net's "ungefähr so"-Lösung für mein neu geschaffenes Problem überhaupt nicht mehr geeignet ist..
-
LustigLustig schrieb:
Genau und wenn zwei Threads gleichzeitig in current_func schreiben, dann gibts auch keine Probleme.

dann pack' es in eine critical section, du pappnase...
:xmas2:
-
net schrieb:
LustigLustig schrieb:
Genau und wenn zwei Threads gleichzeitig in current_func schreiben, dann gibts auch keine Probleme.

dann pack' es in eine critical section, du pappnase...
:xmas2:Trotzdem wird nicht das richtige drin stehen. Wie soll den in einer Variable die Info über zwei Threads stehen?
Es geht schon bei eimen Thread nciht.
char *current_func; void f1() { current_func = "f1"; f2(); int jetztbinichda = 4; } void f2() { current_func = "f2"; ... }void debugger() { for(;;) printf ("der thread ist in %s\n", current_func); }Was würde den drin stehen, wenn de bei Zeile 7 bist?
Keine Pros mehr da, traurig traurig.
:xmas2:
-
LustigLustig schrieb:
Was würde den drin stehen, wenn de bei Zeile 7 bist?
etwas mehr phantasie bitte, du "Pro"
void f1() { char *prev_func = curent_func; current_func = "f1"; ... ... current_func = prev_func; }
-
Und was machst du wenns über mehrere Funktionen geht / mehrere retunrs gibt?
Die Methode ist Müll. Schau dir doch einfach den Callstack im debugger an.
-
LustigLustig schrieb:
Und was machst du wenns über mehrere Funktionen geht / mehrere retunrs gibt?
ja, was kann man da machen? hast du 'ne idee? ich verrat's diesmal aber nicht...
:xmas2:
-
Ja, damit kann man sich ne scheiß Arbeit machen, die der Debugger schon für einen macht. Und der vergisst auch kein return ...
Immer diese Noobs die mit den Pros mitreden wollen :xmas2:
-
Wie wärs mit einem Stack ?
-
LustigLustig schrieb:
Ja, damit kann man sich ne scheiß Arbeit machen, die der Debugger schon für einen macht. Und der vergisst auch kein return ...
im debugger drückt man einfach auf den stop-button, und dann sieht man ja, wo sich der pc gerade befindet...
-
net schrieb:
LustigLustig schrieb:
Ja, damit kann man sich ne scheiß Arbeit machen, die der Debugger schon für einen macht. Und der vergisst auch kein return ...
im debugger drückt man einfach auf den stop-button, und dann sieht man ja, wo sich der pc gerade befindet...
Hääää???? Das hab ich doch schon am anfang gesagt.
-
LustigLustig schrieb:
net schrieb:
LustigLustig schrieb:
Ja, damit kann man sich ne scheiß Arbeit machen, die der Debugger schon für einen macht. Und der vergisst auch kein return ...
im debugger drückt man einfach auf den stop-button, und dann sieht man ja, wo sich der pc gerade befindet...
Hääää???? Das hab ich doch schon am anfang gesagt.
bis jetzt wissen wir ja noch nicht mal, ob dem OP überhaupt ein debugger zur verfügung steht. vielleicht kann seine platform sich ja nur über digitale I/O's mit der aussenwelt verständigen?

:xmas2:
-
Knuddlbaer schrieb:
Wie wärs mit einem Stack ?
Der ist doch schon da, man muss ihn nur nutzen (also RAII).
-
LustigLustig schrieb:
Ja, damit kann man sich ne scheiß Arbeit machen, die der Debugger schon für einen macht. Und der vergisst auch kein return ...
Das sind < 15 Zeilen Code ... plus eine globale Definition und einer Zeile pro Methode. Nichts, was ich ich "scheiß Arbeit" nennen würde -- obwohl ich natürlich auch den Debugger vorziehen würde, ich will schließlich nicht in jeder Methode zusätzlichen Debug-Code einfügen müssen, auch wenn das nur eine Deklaration ist.
-
Konrad Rudolph schrieb:
LustigLustig schrieb:
Ja, damit kann man sich ne scheiß Arbeit machen, die der Debugger schon für einen macht. Und der vergisst auch kein return ...
Das sind < 15 Zeilen Code ... plus eine globale Definition und einer Zeile pro Methode. Nichts, was ich ich "scheiß Arbeit" nennen würde -- obwohl ich natürlich auch den Debugger vorziehen würde, ich will schließlich nicht in jeder Methode zusätzlichen Debug-Code einfügen müssen, auch wenn das nur eine Deklaration ist.
Und was meinst du wieviele Methoden man schreibt, wenn man richtige Programme schreibt, sehr viele -> scheiß Arbeit.
-
LustigLustig schrieb:
Und was meinst du wieviele Methoden man schreibt, wenn man richtige Programme schreibt, sehr viele -> scheiß Arbeit.
@LustigLustig
hast du schon mal Jesters signatur gesehen?Die dümmsten Programmierer schreiben die dicksten Programme.
:xmas2:
-
Programme die viele Funktionen haben sollen, haben auch mehr Methoden.

Ich hab vor kurzem Code gesehen, der war nicht lang, aber trotzdem dumm.
Moment, ...
der warschar *current_func; void f1() { current_func = "f1"; ... } void f2() { current_func = "f2"; ... }void debugger() { for(;;) printf ("der thread ist in %s\n", current_func); }
-
LustigLustig schrieb:
Programme die viele Funktionen haben sollen, haben auch mehr Methoden.
wenn du das schreibst, dann wird das schon stimmen, du "Pro"

LustigLustig schrieb:
Ich hab vor kurzem Code gesehen, der war nicht lang, aber trotzdem dumm.
hey, du musst dich mal von der vorstellung verabschieden, dass hier nur die supertollen komplettlösungen gepostet werden, die der weissheit letzter schuss sind. ich und viele andere noobs z.b. posten nur (möglicherweise falsche) lösungsansätze, die aber trotzdem eine bewusstseinserweiternde wirkung haben können...
:xmas2: