Çözüldü Visual Studio Code Bellek İzleme

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

Musa B.

Hectopat
Katılım
1 Ekim 2017
Mesajlar
1.501
Makaleler
3
Çözümler
11
Merhaba, veri yapıları dersi ödevimiz için bir recursive fonksiyon yazmamız ve bu kod çalışırken belleği izlememiz ve elde ettiğimiz verileri kayıt altına alıp değerlendirmemiz söylendi. Kodu C++ veya Python dilinde yazma hakkımız var. Benim sorunum belleği izleme konusunda. Elimde şu anda PyCharm 2021.2 ve Visual Studio Code var. Bu iki programdan hangisinde daha rahat ve kolay bir biçimde belleği izleyebilirim ve bu izleme işlemini nasıl yapabilirim? Google´da küçük bir araştırma yapmayı denedim lakin elle tutulur bir sonuca ulaşamadım, yönergesi olan bir sayfa falan varsa ona da bakabilirim Türkçe veya İngilizce fark etmez. Şimdiden teşekkürler.
 
Çözüm
Açıkçası izlenmesi gereken pek bir durum yok.

Özyinelemeli fonksiyonlarda kendini çağıran her fonksiyon belirtilen koşul sağlanana kadar return olmaz bu nedenle her fonksiyon çağrısında call stack şişer ve en sonunda stack overflow gerçekleşir.

Normal bir fonksiyon çağrısında fonksiyonun return adresi ve parametreleri callstack'e push edilir, çağrı gerçekleştiğin de ise bu değerler geriye pop edilerek stack temizlenir, recursive fonksiyonlarda ise bunun gerçekleşmesi koşula bağlı olduğu için her fonksiyon çağrısı stack'i işgal eder.

Bu bilgiler yeterli olur, ek olarak aşağıdaki örneği de incelersen kafanda soru işareti kalmaz.

stck.gif

Vavien.

Terapat
Katılım
20 Aralık 2014
Mesajlar
13.430
Makaleler
6
Çözümler
290
Yer
İstanbul
Recursive fonksiyonu bellekte izlemek aptallık olur. Fonksiyonun kendisi de bellekte yer kaplıyor çünkü.

Call stack diye araştırın. Visual Studio'da var. Güzelce kullanılabiliyor.
Hata alınınca çoğu IDE call stack'i metin olarak gösterir.
 

Dynamics

Centipat
Katılım
23 Kasım 2021
Mesajlar
238
Çözümler
26
Yer
İzmir
Açıkçası izlenmesi gereken pek bir durum yok.

Özyinelemeli fonksiyonlarda kendini çağıran her fonksiyon belirtilen koşul sağlanana kadar return olmaz bu nedenle her fonksiyon çağrısında call stack şişer ve en sonunda stack overflow gerçekleşir.

Normal bir fonksiyon çağrısında fonksiyonun return adresi ve parametreleri callstack'e push edilir, çağrı gerçekleştiğin de ise bu değerler geriye pop edilerek stack temizlenir, recursive fonksiyonlarda ise bunun gerçekleşmesi koşula bağlı olduğu için her fonksiyon çağrısı stack'i işgal eder.

Bu bilgiler yeterli olur, ek olarak aşağıdaki örneği de incelersen kafanda soru işareti kalmaz.

stck.gif
 
Çözüm

257106

Decapat
Katılım
19 Nisan 2019
Mesajlar
936
Makaleler
3
Çözümler
16
Python ya da C++ dediğin için Assembly'den registryler üzerinden taramayı hariç tutarsak tek yapabileceğin şey stack trace fonksiyonları üzerinden bakabilmek olur, ufak bir ipucu vermek gerekirse Windows için CaptureStackBackTrace Linux için backtrace API'lerine göz at.
 
Yukarı