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