Delphi’de access violation hatalarını gidermek

  09 May 2008, 06:14, Yazar: Özgür Koca, Kategori: Delphi, Programlama

Access violation hatası belleğin işlem yapılan konumunun okunamamasından veya yazılamamasından kaynaklanır. Hata mesajında hataya neden olan kodun segment ve ofset adresleri bildirildiğinden programcının hatanın yerini tespit etmesi zordur. Benzer sorunlar sıfıra bölme (zero division) ve yığın taşması (stack overflow) gerçekleştiğinde de olur.

Delphi programlarında bu tür sorunlara neden olan kod satırlarını tespit münkündür. Bunun için Project->Options…->Linker ekranındaki Map file ayarı Detailed olarak ayarlanır. Bundan sonra her derleme işleminde uzantısı map olan bir bellek harita dosyası oluşturur.

Bu dosyada program  kod satırlarınıa karşılık gelen makina kodlarının ofset adresleri yer alır. Böylece hatanın oluştuğu bellek adresinin hangi kod satırına karşılık geldiği bulunabilir.

Hatalı kod satırını daha düzgün ve ayrıntılı olarak raporlayabilmek için class’ını kullanabiliriz. uLkStackTrace Mozilla lisansıyla dağıtılan bir SourceForge.net projesi.

uLkStackTrace sınıfınınkullanıldığı örnek proje dosyasını aşağıdaki bağlantı ile indirebilirsiniz:

unhandled exceptions Delphide access violation hatalarını gidermek

UnhandledExceptions_DelphiSourceCode.rar (~241KB)<

Örnek projede de görüleceği üzere, sınıfın kullanılmasından kısaca bahsetmek  gerekirse;

  • Uses bloğuna uLkStackTrace unit ismini ekleyin.
  • İstisnaları ekrana veya bir dosyaya rapor edecek bir prosedür hazırlayın.
  • LkExceptionReporter yordamına bu prosedürü atayın.
  • Rapor prosedürünü Form.Create‘in başına yazmayı unutmayın.


Not: Yardımlarından dolayı Genius kardeşime teşekkür ederim.

Yazan: Tankado








1 Puan2 Puan3 Puan4 Puan5 Puan6 Puan7 Puan8 Puan9 Puan10 Puan (1 votes, average: 10,00 out of 10)


Biraz gürültü yapın





Not: Yazdığınız yorum yönetici tarafından onaylandıktan sonra yayınlanacaktır.


  Yorumlara eposta ile abone ol




  • Hakkında | İletişim | Wordpress.org | RSS | Abone Ol

  • (c) 2005-2009 Wordpress Tema: Tankado & Theme by Tankado.com