Posted By: Quasimodo (Quasimodo) on 'CZprogram'
Title:     Re: Call stack
Date:      Thu Mar 27 18:22:11 2003

> > Zdar,
> >  obcas mi program zhavaruje a sam o sobe vypise nejake info - konkretne
> call
> > stack a obsahy nejakych promennych. Konkretne nedavno eDonkey2000. Jak se 
> > tohle da udelat, aniz bych to spoustel v debuggeru? Zajima me to pro ruzne
> 
> > platformy - ponejvice jak by se to udelalo v Linuxu a Woknech. Ze bych
> neco 
> > takoveho dostal z jednocipu je asi naprosta pitomost :-)
> >  Znate nekdo na to nejakou fintu?
> 
> Ve Windowsech je na to funkce SetUnhandledExceptionFilter, pres kterou 
> nastavis fci, ktera se ma volat pri chybe. Ta funkce (to co das jako 
> parametr do SetUnhandledExceptionFilter) ma parametr typu 
> STRUCT _EXCEPTION_POINTERS, ktery obsahuje EXCEPTION_RECORD a CONTEXT. V 
> EXCEPTION_RECORD je mimo jine: kod chyby (EXCEPTION_ACCESS_VIOLATION, 
> EXCEPTION_ARRAY_BOUNDS_EXCEEDED, atd.) a adresa chyby. V CONTEXT je aktualni
> 
> obsah registru procesoru. 
> Z nej se pres obsahy registru ESP&EBP da celkem slusne udelat backtrace, ale
> 
> to uz je compiler-specific (ale napr. nam to v Delphi funguje bezvadne) a
> taky 
> zalezi napr. na tom, zda (ne)mas zapnute Stack Frames v kompilatoru.
> 
> V Linuxu....co backtrace()/backtrace_symbols()/backtrace_symbolsfd() z 
> execinfo.h ?
> Ale bacha ! Linux only (neni na jinych *NIXech) !
> 
> Dzemen
Diky moc, presne tohle jsem chtel slyset. Pod woknama jsem to jeste nezkusil,
pod linuxem to slape a po prekompilovani s -rdynamic to dokonce rika i to co 
chci. Bezva!

BTW to tyhle funkce fakt znas z hlavy, nebo je umis tak rychle najit? 
-
Clovek je nejpomalejsi zname zarizeni typu I/O.
                                                                 Quasimodo

Search the boards