Mert Özen Her Satırda Daha İleri

Blog

Mert Özen'in yazılım geliştirme, backend, frontend ve DevOps üzerine blog yazıları.

Seriler
33 yazı bulundu
Crash ve Memory Dump Analizi: dotnet-dump, SOS Komutları ve Container'da Dump Almak
Geliştirici Araçları SERİ 09

Crash ve Memory Dump Analizi: dotnet-dump, SOS Komutları ve Container'da Dump Almak

Crash dump'ı DOTNET_DbgEnableMiniDump ile otomatik alıyor, dotnet-dump analyze içinde pe -lines, clrthreads, dumpheap -stat, gcroot, syncblk ve dumpasync ile çöken thread'i, büyüyen static cache'i ve lock deadlock'unu buluyoruz. Container'da PID 1 ve --init farkı, SDK'sız image'a aracı koymak, Heap/Full dump'ın OOM riski ve dump'lardaki kişisel veri.

8 Kas 2026 13 dk 10
Log'lardan Sebep Bulmak: Correlation ID, Trace ID ve Zaman Çizelgesi Kurmak
Geliştirici Araçları SERİ 08

Log'lardan Sebep Bulmak: Correlation ID, Trace ID ve Zaman Çizelgesi Kurmak

Hatanın sebebini log'larda bulmak için önce ilk sinyali, sonra tek bir request'in trace ID ile servisler arasındaki hikâyesini, en son deploy ve configuration değişiklikleriyle ortak bir zaman çizelgesini kuruyoruz. W3C traceparent, ProblemDetails'teki traceId, runtime'da log seviyesi açmak, jq sorguları ve log'daki kişisel veriyi maskelemek.

8 Kas 2026 11 dk 8
Angular Uygulamasında Bug Avı: Signal, Change Detection, RxJS ve HTTP Katmanı
Geliştirici Araçları SERİ 07

Angular Uygulamasında Bug Avı: Signal, Change Detection, RxJS ve HTTP Katmanı

Angular'da bug'ı UI, state, HTTP ve API zincirinde ortadan bölerek daraltırız. Gerçek Vitest çıktılarıyla: yerinde değiştirilen array yüzünden güncellenmeyen computed, await sonrası takip edilmeyen signal, Angular 22'nin varsayılan OnPush'unda ekranın güncellenmemesi ve gizlenen NG0100, catchError yüzünden ölen arama stream'i, switchMap iptalleri ve interceptor sırası.

8 Kas 2026 11 dk 8
Async ve Multi-Thread Debugging: Parallel Stacks, Tasks Penceresi, Deadlock ve Race Condition
Geliştirici Araçları SERİ 06

Async ve Multi-Thread Debugging: Parallel Stacks, Tasks Penceresi, Deadlock ve Race Condition

Async bir hang'de bekleyen kod hiçbir thread'in stack'inde görünmez; Parallel Stacks'in Tasks görünümüne ya da dump'taki async zincire bakmak gerekir. Lock sırası deadlock'unu ve .Result kaynaklı sync-over-async deadlock'unu dotnet-stack çıktısıyla okuyor, thread pool starvation'ı ölçüyor, Dictionary, sayaç ve check-then-act race condition'larını gerçek koşularla gösterip freeze/thaw ile race'i zorlamayı anlatıyoruz.

8 Kas 2026 11 dk 6
.NET Debugger İleri Seviye: Conditional, Tracepoint, Data Breakpoint ve Exception Settings
Geliştirici Araçları SERİ 05

.NET Debugger İleri Seviye: Conditional, Tracepoint, Data Breakpoint ve Exception Settings

Değeri kimin değiştirdiğini bulmanın en kısa yolu data breakpoint: Visual Studio'da .NET Core 3+ projelerde property değişince debugger yazan satırda durur. Conditional, hit count ve dependent breakpoint, tracepoint, yutulan exception'lar için Exception Settings, Set Next Statement, Hot Reload, DebuggerDisplay ve Source Link'i gerçek çıktılarla; Copilot önerilerini hipotez olarak test etmeyi ve Rider ile Visual Studio Code karşılıklarını görüyoruz.

8 Kas 2026 13 dk 6
Hata Mesajı ve Stack Trace Okumak: .NET Exception'ları, Async Stack'ler ve Angular NG Hataları
Geliştirici Araçları SERİ 04

Hata Mesajı ve Stack Trace Okumak: .NET Exception'ları, Async Stack'ler ve Angular NG Hataları

Stack trace yukarıdan aşağı değil katman katman okunur: asıl sebep çoğu zaman ---> ile başlayan inner exception'dadır ve log'daki 50 aynı hatanın kökü genellikle zaman sırasındaki ilk hatadır. .NET 10'da InnerException zinciri, AggregateException, throw ex ile kaybolan stack, ExceptionDispatchInfo, ProblemDetails traceId'den log'a gitmek, source map ve Angular 22'nin NG0100, NG0200, NG0201 hatalarını gerçek çıktılarla okuyoruz.

8 Kas 2026 13 dk 5
Problemi Daraltmak: Binary Search, git bisect run ve Delta Debugging
Geliştirici Araçları SERİ 03

Problemi Daraltmak: Binary Search, git bisect run ve Delta Debugging

Hatayı bulmanın en hızlı yolu aralığı her adımda ikiye bölmektir: kodda, katmanlarda, commit'lerde ve girdide. git bisect run 31 commit'lik aralıkta derlenmeyen commit'i 125 ile atlayıp hatalı refactoring'i 7 denemede buluyor; ddmin algoritması 5.000 satırlık import dosyasını 3 satıra indiriyor.

8 Kas 2026 14 dk 4
Bug'ı Reproduce Etmek: Minimal Repro, Ortam Farkları ve Önce Kırmızı Test
Geliştirici Araçları SERİ 02

Bug'ı Reproduce Etmek: Minimal Repro, Ortam Farkları ve Önce Kırmızı Test

Reproduce edemediğin bug'ı düzeltemezsin: önce kullanıcıdan doğru bilgiyi al, culture, timezone, configuration ve sürüm farklarını kontrol et, hatayı minimal repro'ya indir ve düzeltmeden önce kırmızı bir xUnit testi yaz. Container'da 1245'e dönüşen 12,45 ve iki satıra inen sipariş toplamı hatası gerçek çıktılarla.

8 Kas 2026 11 dk 4
Debugging Bir Yöntemdir: Gözlem, Hipotez, Deney ve 9 Altın Kural
Geliştirici Araçları SERİ 01

Debugging Bir Yöntemdir: Gözlem, Hipotez, Deney ve 9 Altın Kural

Debugging tahminle değil yöntemle yapılır: gözlem, test edilebilir hipotez, tahmin, deney ve sonuç döngüsü. 1 kuruşluk sipariş toplamı farkıyla başlayan vakada Agans'ın 9 kuralını, shotgun debugging'in maliyetini ve debugging günlüğünü gerçek çıktılarla anlatıyoruz.

8 Kas 2026 11 dk 5
Blog Haritası