Bu, Ubuntu Online, Fedora Online, Windows çevrimiçi emülatörü veya MAC OS çevrimiçi emülatörü gibi birden fazla ücretsiz çevrimiçi iş istasyonumuzdan birini kullanarak OnWorks ücretsiz barındırma sağlayıcısında çalıştırılabilen komut sprof'udur.
Program:
ADI
sprof - paylaşılan nesne profili oluşturma verilerini oku ve görüntüle
SİNOPSİS
uzman [seçenek] ... paylaşılan-nesne-yolu [profil-veri-yolu]
AÇIKLAMA
The uzman komutu, paylaşılan nesne (paylaşılan kitaplık) için bir profil oluşturma özeti görüntüler
ilk komut satırı argümanı olarak belirtilir. Profil oluşturma özeti kullanılarak oluşturulur
(isteğe bağlı) ikinci komut satırı bağımsız değişkeninde önceden oluşturulmuş profil oluşturma verileri. Eğer
profil oluşturma veri yolu adı atlanır, ardından uzman kullanarak onu çıkarmaya çalışacaktır.
paylaşılan nesnenin soname adı ile bir dosya arıyor .profil içinde
geçerli dizin.
SEÇENEKLER
Aşağıdaki komut satırı seçenekleri, üretilecek profil çıktısını belirtir:
-c, --çağrı-çiftleri
Paylaşılan tarafından dışa aktarılan arabirimler için çağrı yolu çiftlerinin bir listesini yazdırın.
nesne, her yolun kaç kez kullanıldığıyla birlikte.
-p, --düz-profil
İzlenen nesnedeki tüm işlevlerin düz bir profilini oluşturun.
sayar ve işaretler.
-q, --grafik
Bir çağrı grafiği oluşturun.
Yukarıdaki seçeneklerden hiçbiri belirtilmemişse, varsayılan davranış düz bir
profil ve bir çağrı grafiği.
Aşağıdaki ek komut satırı seçenekleri mevcuttur:
-?, --yardım et
Komut satırı seçeneklerinin ve bağımsız değişkenlerin bir özetini görüntüleyin ve çıkın.
--kullanım
Kısa bir kullanım mesajı görüntüleyin ve çıkın.
-V, --versiyon
Program sürümünü görüntüleyin ve çıkın.
UYGUN TO
The uzman komut, POSIX.1'de bulunmayan bir GNU uzantısıdır.
ÖRNEK
Aşağıdaki örnek, aşağıdakilerin kullanımını göstermektedir: uzman. Örnek bir ana bölümden oluşmaktadır.
paylaşılan bir nesnede iki işlevi çağıran program. İlk olarak, ana programın kodu:
$ kedi program.c
#Dahil etmek
geçersiz x1(boş);
geçersiz x2(boş);
int
main(int argc, char *argv[])
{
x1();
x2();
çıkış(EXIT_SUCCESS);
}
Fonksiyonlar x1() ve x2() için kullanılan aşağıdaki kaynak dosyada tanımlanmıştır.
paylaşılan nesneyi oluşturun:
$ kedi libdemo.c
#Dahil etmek
geçersiz
tüketmekCpu1(int limit)
{
intj;
için (j = 0; j < lim; j++)
getppid();
}
geçersiz
x1(boş) {
intj;
(j = 0; j < 100; j++) için
tüketmekCpu1(200000);
}
geçersiz
tüketmekCpu2(int limit)
{
intj;
için (j = 0; j < lim; j++)
getppid();
}
geçersiz
x2(boş)
{
intj;
(j = 0; j < 1000; j++) için
tüketmekCpu2(10000);
}
Şimdi paylaşılan nesneyi gerçek adla oluşturuyoruz libdemo.so.1.0.1, ve sonam
libdemo.so.1:
$ cc -g -fPIC -paylaşılan -Wl,-soname,libdemo.so.1 \
-o libdemo.so.1.0.1 libdemo.c
Daha sonra kütüphane soname ve kütüphane linker ismi için sembolik linkler oluşturuyoruz:
$ ln -sf libdemo.so.1.0.1 libdemo.so.1
$ ln -sf libdemo.so.1 libdemo.so
Ardından, ana programı, onu paylaşılan nesneye bağlayarak derleriz ve ardından aşağıdakileri listeleriz:
programın dinamik bağımlılıkları:
$ cc -g -o disiplin görevlisi program.c -L. -Idemo
$ dd disiplin görevlisi
linux-vdso.so.1 => (0x00007fff86d66000)
libdemo.so.1 => bulunamadı
libc.so.6 => /lib64/libc.so.6 (0x00007fd4dc138000)
/lib64/ld-linux-x86-64.so.2 (0x00007fd4dc51f000)
Paylaşılan nesne için profil oluşturma bilgilerini almak için ortamı tanımlarız.
değişken LD_PROFİL kütüphanenin soname ile:
$ ihracat LD_PROFILE=libdemo.so.1
Daha sonra ortam değişkenini tanımlarız LD_PROFILE_OUTPUT yol adı ile
profil çıktısının yazılması gereken dizin ve yoksa bu dizini oluşturun
zaten var:
$ ihracat LD_PROFILE_OUTPUT=$(pwd)/prof_data
$ mkdir -p $LD_PROFILE_OUTPUT
LD_PROFİL profil oluşturma çıktısının olmasına neden olur ekli zaten varsa çıktı dosyasına,
bu nedenle önceden var olan hiçbir profil oluşturma verisi olmadığından emin oluruz:
$ rm -f $LD_PROFILE_OUTPUT/$LD_PROFILE.profil
Daha sonra, bir dosyaya yazılan profilleme çıktısını üretmek için programı çalıştırırız.
dizin içinde belirtilen LD_PROFILE_OUTPUT:
$ LD_LIBRARY_PATH=. ./program
$ ls prof_data
libdemo.so.1.profil
Daha sonra kullanırız uzman -p sayımlar ve keneler ile düz bir profil oluşturma seçeneği:
$ uzman -p libdemo.so.1 $LD_PROFILE_OUTPUT/libdemo.so.1.profile
Düz profil:
Her numune 0.01 saniye olarak sayılır.
% kümülatif öz toplam
zaman saniye saniye bizi arar/bizi arayın/adınızı arayın
60.00 0.06 0.06 100 600.00 tüketCpu1
40.00 0.10 0.04 1000 40.00 tüketCpu2
0.00 0.10 0.00 1 0.00 x1
0.00 0.10 0.00 1 0.00 x2
The uzman -q seçeneği bir çağrı grafiği oluşturur:
$ uzman -q libdemo.so.1 $LD_PROFILE_OUTPUT/libdemo.so.1.profile
indeks % zaman kendi kendine çocuk denilen isim
0.00 0.00 100/100 x1 [1]
[0] 100.0 0.00 0.00 100 tüketmekCpu1 [0]
-----------------------------------------------
0.00 0.00 1/1
[1] 0.0 0.00 0.00 1 x1 [1]
0.00 0.00 100/100 tüketmekCpu1 [0]
-----------------------------------------------
0.00 0.00 1000/1000 x2 [3]
[2] 0.0 0.00 0.00 1000 tüketmekCpu2 [2]
-----------------------------------------------
0.00 0.00 1/1
[3] 0.0 0.00 0.00 1 x2 [3]
0.00 0.00 1000/1000 tüketmekCpu2 [2]
-----------------------------------------------
Yukarıda ve aşağıda, " " dizeleri, dizinin dışındaki tanımlayıcıları temsil eder.
profilli nesne (bu örnekte bunlar ana()).
The uzman -c seçeneği, çağrı çiftlerinin bir listesini ve bunların oluşum sayısını oluşturur:
$ uzman -c libdemo.so.1 $LD_PROFILE_OUTPUT/libdemo.so.1.profile
x1 1
x1 tüketmekCpu1 100
x2 1
x2 tüketmekCpu2 1000
onworks.net hizmetlerini kullanarak sprof'u çevrimiçi kullanın