[Gelistirici] -debug paketleri

Onur Küçük onur at pardus.org.tr
8 Şub 2008 Cum 21:26:38 EET


> > Hali hazırda -debug paketi üretme işi PiSi içinde destekleniyor. Bu
> > süreç şöyle işliyor (değişmedi ise, uzun zamandır kullanmıyorum);
> >
> > Paket içinden gelen dosyalardan debug sembooleri --only-keep-debug
> > ile strip ediliyor ve bu dosyanın içine senin debug sembolerin
> > şurada işareti konuyor. Bu örneğin ld.so'nun debug semboleri
> > çıkartılmış halinin içine senin debug
> > sembollerin /debug/ld.so.debug içinde demek oluyor, -debug paketi
> > pisi tarafından oluşturuluyor (bu path'e koyacak şekilde). gdb ve
> > benzeri araçlar elf arkadaşların içinden bu yönlendirmeyi okuyup
> > debug sembollerini düzgünce yüklüyor.

 Bu yöntem güzel bence. Sadece debug bilgisi içeren paketler olması
bandwidth açısından da rahat olur. Bir soru, debug paketlerinde
bağımlılık ile ilgili özel bir durum var mı ? Debug paketlerine özel
olarak runtime dep olmaması da verimli olur gibime geliyor, kabaca "şu
şu paket yeterli olur gibi" tahminlerde bulunabiliriz, ama
bağımlılıkları normal paketler gibiyse debug etmek için gereksiz bir
sürü paketi çekip kurmak gerekebilir.

> > Burada 2 sorun var.
> >
> > 1. Daha önce -debug paketlerini depoda tutmak, maintain etmek v.s
> > gibi işler çığrından çıkmıştı. Bunlar için 2. bir depo açmak ve
> > bunları yönetecek kodu farm'a eklemek gerekiyor.

  Evet aynı depoda olmazsa çok iyi olur

> > 2. Normalde her paketin bizim flaglarımı aldığı varsayıyoruz (bazı
> > paketlerin bunu iplemediğine eminim :P), debug sembollerinden adam
> > gibi çıktı alabilmek için flaglarımızın sonuna "-g3 -ggdb"
> > ekliyoruz. Fakat bizim flagları iplemeyen paketlerde (ki aslında bu
> > -debug paketlerinin sorunu da değil, bu paketler düzeltilmeli) elde
> > edilen debug sembollerinden aldığımız geri bildirim şu an ki "no
> > symbol found" durumundan farklı değil.

 2008 loglarına bakar paketleri de elden geçiririz arada. Bazı
paketlerde flaglarla oynamak gerekiyor ama -g3 -ggdb eklenebilir olmalı
tabi ki, peki -O2 leri ayıklamak gerekiyor mu ?  İsmail'in söylediği
actions-debug.py gibi bir yönteme girersek belki -O0 a çekmek anlamlı
olabilir (yanlış hatırlıyor olabilirim ama optimizasyon bazen debug a
zarar veriyor diye biliyorum).

> > Durum budur, öneri/görüş/v.s v.s?
> 
> Debian'ı inceledim. Her pakete -dbg paketi yapmıyorlar. Seçtiklerine 
> yapıyorlar var ve bizim sisteme göre düşünürsek actions-debug.py gibi
> ayrı bir debug build rule'ları var her paket için.

 Böyle yaparsak, -debug sadece sembolleri ayrılmış paket olmayacak,
tamamen baştan derlenmiş bir paket olacak, iki kere aynı paket
derlenecek, biraz da aynı paketi iki kere maintain etmiş gibi olacağız
(pek iş yükü de getirmeyecek ama arada gözden kaçan şeyler olabilir).
Ama bir getirisi de mesela programda #ifdef DEBUG benzeri (yazarın
belirlediği) özel flagları açma şansımız olacak.

 Getir götür hesabında hangisi ağır basıyor karar veremedim açıkcası,
ama depoda bir sürü debug ihtiyacı olmayan (data, script vs.) paketi de
var. Bunları ayrıştıracak bir işaret (actions da olur, action-debug.py
var mı kontrolü olur) ya da listeye ihtiyacımız olacak.


-- 
 Onur Küçük                                      Knowledge speaks,   
 <onur.--.-.pardus.org.tr>                       but wisdom listens  




Gelistirici mesaj listesiyle ilgili daha fazla bilgi