17.6. Tworzenie i interpretowanie stosu wywołań

Problem

Podczas debugowania programu chcemy zinterpretować stos wywołań związany z wyjątkami w języku Ruby albo zobaczyć ścieżkę, jaką interpreter Ruby przeszedł, aby dotrzeć do określonego wiersza w kodzie.

Rozwiązanie

Aby obejrzeć bieżący stos wywołań interpretera Ruby, można wywołać metodę Kernel#caller. Stos wywołań jest reprezentowany za pomocą listy łańcuchów.

Poniższy program języka Ruby symuluje firmę stosującą styl zarządzania góra-dół: jedna metoda jest delegowana do innej, a ta wywołuje jeszcze inną. Metoda na samym dole może wykorzystać metodę wywołującą w celu podejrzenia znajdujących się wyżej na stosie metod, które ją wywołały:

 1 #!/usr/bin/ruby 2 # delegation.rb 3 class ...

Get Ruby. Receptury now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.