Fandom

C/C++

Backtrace i odwijanie stosu

53strony na
tej wiki
Dodaj nową stronę
Dyskusja0 Udostępnij

W przypadku gdy wyjątek rzucany jest głęboko z kodu często trudno jest wyśledzi dokładne miejsce jego rzucenia. W takiej sytuacji idealny byłby tzw. backtrace, czyli lista kolejno wołanych funkcji, aż do tej która rzuciła wyjątek.

Można to zrobić na kilka sposobów: jeden (nieprzenośny) to wykorzystanie API systemu operacyjnego, np. nagłówka execinfo.h i funkcji backtrace() pod Linuksem.

Drugie podejście to wykorzystanie funkcji obsługi ABI dostarczanych wraz z kompilatorem i ręczna analiza stosu. Paweł 'Pluto' Sikora zaczął implementować to podejście w swojej bibliotece [1].

ABI kompilatora dostarcza także funkcji do 'demanglowania' nazw symboli uzyskiwanych np. za pomocą typeid(foo).name()

Ad blocker interference detected!


Wikia is a free-to-use site that makes money from advertising. We have a modified experience for viewers using ad blockers

Wikia is not accessible if you’ve made further modifications. Remove the custom ad blocker rule(s) and the page will load as expected.

Więcej z Fandomu

Losowa wiki