Yığın izleme
Bilgisayar biliminde , yığın izlemesi (kelimenin tam anlamıyla İngilizce'den "yığın izleme" olarak çevrilmiştir), ayrıca yığın geri izleme [1] veya yığın geri izleme [ 2 ] olarak da adlandırılır, bir işlemin yürütülmesi sırasında belirli bir zamanda etkin olan yığın çerçevelerinin bir listesidir. programı . Bir program çalıştırıldığında, bellek genellikle iki konumda dinamik olarak ayrılır: yığın ve yığın . Teknik olarak, yığına bir bellek bloğu tahsis edildiğinde, ondan önce tahsis edilmiş başka bellek blokları olabileceğinden kolayca kaldırılamaz. Bir programda bir işlev çağrıldığında , etkinleştirme kaydı (veya yığın işaretçisi) olarak adlandırılan bir bellek bloğu, çalışma zamanı yığınının üstüne tahsis edilir. Yüksek düzeyde, bir etkinleştirme kaydı, işlev parametreleri ve işlevde bildirilen yerel değişkenler için bellek ayırır.
Yığın izleme, çağrılan iç içe işlevlerin sırasını yığın izlemesinin oluşturulduğu noktaya kadar izlemenize olanak tanır . Bu, özellikle bir hata sonucu izleme oluşturulduğunda kullanışlıdır. Bu nedenle, programcılar hata ayıklarken genellikle yığın izlemeyi kullanır . Bazen son kullanıcı bile bir hata mesajının parçası olarak bir yığın izi görebilir ve bunu daha sonra programcıya bildirebilir.
Örnek
Örneğin, bir hata içeren aşağıdaki Python programını alın:
tanım a ():
ben = 0
j = b ( ben )
dönüş j
tanım b ( z ):
k = 5
eğer z == 0 :
c ()
k + z'ye dönüş
tanım c ():
hata ()
bir ()
Programı standart Python yorumlayıcısıyla çalıştırmak aşağıdaki hata mesajını verir:
Geri izleme (en son çağrı son):
Dosya "tb.py" , satır 15 , <module>
a ()
Dosya "tb.py" , satır 3 , a
j = b ( i )
Dosya "tb.py" , satır 9 , b
c'de ()
Dosya "tb.py" , satır 13 , c'de
hata ()
NameError : 'error' adı tanımlı değil
Yığın izleme, işlevdeki hatanın nerede oluştuğunu gösterir c. Mesaj ayrıca işlevin ctarafından çağrıldığını b, tarafından çağrıldığını ve bunun ada programın 15. satırındaki (son) kod tarafından çağrıldığını bildirir.
Programlama dilleri
Java ve C# dahil olmak üzere birçok programlama dili, uygun sistem çağrıları yoluyla mevcut yığın izinin alınmasını yerel olarak destekler . C++ bunu yapmak için yerleşik desteğe sahip değildir, ancak C++ programcıları stacktrace gibi özel kitaplıklar aracılığıyla yığın izlerini alabilir . JavaScript'te istisnalar , atıldığı noktadan itibaren yığını içeren (dolayısıyla invocable as ) adlı bir özellik içerir ; dahası, çoğu modern tarayıcı aramayı destekler . [3]stackerr.stackconsole.trace();
Notlar
- ^ Geri İzlemeler | _ _ GNU C Kütüphanesi , gnu.org'da . Erişim tarihi: 15 Aralık 2020 .
- ^ Geri İzleme - docs.python.org adresinde bir yığın geri izlemeyi yazdırın veya alın . Erişim tarihi: 15 Aralık 2020 .
- ^ Console.tracee ( ) - Web API'leri § Tarayıcı uyumluluğu , geliştirici.mozilla.org , MDN'de . Erişim tarihi: 15 Aralık 2020 .
İlgili öğeler
- Bağlam (BT)
- Yığın taşması
- İstisnaların işlenmesi