Hallo,
Ich habe die letzten Stunden einige Tests betreffend Stackwalking für C-Lite gemacht (was ein absolut notwendiges / fantastisches feature zum debuggen wäre). Im Moment realisier ich - das unter C++ funktionierende - Stackwalking mit Hilfe der Debug Funktion StackWalk64.
Zum test wird ein sehr einfacher C-Lite code benutzt:
int test2() { stack_walk_in_dll(); }
int test() { test2(); }
Die Funktion test() wird aufgerufen.
Das folgende Bild zeigt die (korrekte) Addresse der test2() Funktion in der dll Funktion stack_walk_in_dll().

Leider komme ich nicht weitere zurück. Meine Vermutung war spontan, dass die Funktion test() beim Aufruf der Funktion test2() kurzzeitig beendet wird (bzw. der Status der Funktion test() beim Aufruf der Funktion test2() gespeichert wird, und danach wieder fortgeführt wird) - (wenn das stimmt - ist dies nicht unglaublich langsam?).
Kann ich mir nach längeren überlegen eigentlich nicht vorstellen - Daher: Haben Sie eine Vermutung warum die StackWalk Rückgabewerte nicht mehr stimmen (Ich weiß C-Lite produziert keine PDB Dateien - nur ich will ja auch keine Zeilennummern / Funktionsnamen o.ä. - Die finde ich dann schon selber raus mit der Speicheraddresse).
Könnten Sie sich einen Weg vorstellen, Stackwalking in Lite-C zu realisieren?
mit freundlichen Grüßen,
Tech
PS: Die gleichen Ergebnisse liefert auch der StackWalk von Visual Studio 2008.