Posted By: dzemen () on 'CZprogram'
Title:     Re: Call stack
Date:      Fri Mar 28 10:53:01 2003

> > 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? 

SetUnhandledExceptionFilter - z hlavy. Svyho casu jsem napsal backtrace 
algoritmus pro Borland Pascal 7, po prechodu na Wokna bylo nutne najit 
nahradu. Takze jsem se (ted, kdyz jsem to sem psal) akorat kouknul do WinAPI 
na presne deklarace. 
Linux - od ceho tu ten Google je, ze ? ;-))

Dzemen

Search the boards