Synopsis
dtrace [-aACeFhHlqSvVwZ] [-b bufsz] [-c cmd] [-D name [=value]] [-I path] [-L path] [-o output]
[-s script] [-U name] [-x arg[=value]] [-p pid] [-P provider [[predicate] action]]
[-m [provider:] module [[predicate] action]]
[-f [[provider:] module:] function [[predicate] action]]
[-n [[[provider:] module:] function:] name [[predicate] action]]
[-i probe-id [[predicate] action]] [-W pname]
Description
DTrace, Solaris'ten aktarılmış kapsamlı bir dinamik izleme çerçevesidir. DTrace; yöneticilerin, geliştiricilerin ve servis personelinin, işletim sisteminin ve kullanıcı programlarının davranışları hakkındaki isteğe bağlı sorulara kısa ve net yanıtlar bulmasını sağlayan güçlü bir altyapı sunar.
dtrace komutu, DTrace bileşeni tarafından sunulan temel hizmetlere genel bir arayüz sağlar; bu hizmetler şunları içerir:
• DTrace tarafından şu anda yayınlanan izleme noktalarının (probe) ve sağlayıcıların (provider) listesini sunan seçenekler
• İzleme noktası tanımlama belirteçlerinden (sağlayıcı, modül, fonksiyon, ad) herhangi birini kullanarak izleme noktalarını doğrudan etkinleştiren seçenekler
• D derleyicisini çalıştıran ve bir veya daha fazla D programı dosyasını ya da doğrudan komut satırında yazılmış programları derleyen seçenekler
• Anonim izleme programları oluşturan seçenekler
• Program kararlılık raporları oluşturan seçenekler
• DTrace izleme ve ara bellek (buffer) davranışını değiştiren ve ek D derleyicisi özelliklerini etkinleştiren seçenekler
Bir yorumlayıcı dosya oluşturmak için dtrace'i bir shebang bildiriminde kullanarak D betikleri oluşturabilirsiniz. Ayrıca izleri gerçekten etkinleştirmeden D programlarını derlemeyi denemek ve özelliklerini belirlemek için -e seçeneğini kullanabilirsiniz.
Options
-P, -m, -f, -n ve -i seçenekleri tarafından kabul edilen argümanlar, eğik çizgiler (/) içine alınmış isteğe bağlı bir D dili koşul ifadesi (predicate) ve süslü parantezler ({}) içine alınmış isteğe bağlı bir D dili eylem deyimi listesi içerebilir. Komut satırında belirtilen D program kodu, meta karakterlerin kabuk (shell) tarafından yorumlanmasını önlemek için uygun şekilde tırnak içine alınmalıdır.
Aşağıdaki seçenekler desteklenmektedir:
-arch=değer dtrace hedef veri modelini ayarlayın. Şu anda desteklenen mimarilerin listesi için arch(1) kılavuzuna bakın.
-a: Anonim izleme durumunu üstlenin ve izlenen verileri görüntüleyin. dtrace'in yeni verileri beklemeye devam etmek yerine, anonim izleme durumunu tükettikten hemen sonra çıkmaya zorlamak için -a seçeneğini -e seçeneğiyle birleştirebilirsiniz.-A: Anonim (önyükleme sırasında) izleme için yönergeler oluşturun ve bunları NVRAM'de saklayın. Bu seçenek, belirtilen izleme noktalarını anonim izleme için etkinleştirmek üzere bir dizi dtrace yapılandırma dosyası yönergesi oluşturur ve ardından çıkar. Ayrıca bkz. -a
-b ara_bellek_boyutu Ana izleme ara belleği boyutunu ara_bellek_boyutu değerine ayarlayın. İzleme ara belleği boyutu k, m, g veya t boyut soneklerinden herhangi birini içerebilir. Ara bellek alanı tahsis edilemezse dtrace, bufresize özelliğinin ayarına bağlı olarak ara bellek boyutunu azaltmaya veya çıkmaya çalışır.
-c cmd: Belirtilen cmd komutunu çalıştırın ve tamamlandığında çıkın. Komut satırında birden fazla -c seçeneği varsa dtrace, tüm komutlar sonlandığında çıkar ve sonlanan her bir alt süreç için çıkış durumunu bildirir. İlk komutun süreç kimliği (PID), komut satırında belirtilen veya -s seçeneği kullanılarak sunulan tüm D programlarına $target makro değişkeni aracılığıyla sağlanır.-C: D programlarını derlemeden önce üzerlerinde clang(1) içindeki C ön işlemcisini çalıştırın. -D, -U, -I ve -H seçeneklerini kullanarak C ön işlemcisine seçenekler geçirebilirsiniz.
-D ad [=değer] clang(1) çağrılırken ad tanımlayın (-C seçeneğiyle etkinleştirilir). Ek bir değer belirtirseniz, ada karşılık gelen değer atanır. Bu seçenek, her clang(1) çağrısına -D seçeneğini geçirir.
-e: İstekleri derledikten ve anonim izleme durumunu (-a seçeneği) tükettikten sonra, ancak herhangi bir izleme noktasını etkinleştirmeden önce çıkın. Anonim izleme verilerini yazdırmak ve çıkmak için bu seçeneği -a seçeneğiyle birleştirebilirsiniz. Bu seçeneği D derleyicisi seçenekleriyle de birleştirebilirsiniz. Bu kombinasyon, programların gerçekten çalıştırılmadan ve karşılık gelen araçlandırma (instrumentation) etkinleştirilmeden derlendiğini doğrular.
-f [[sağlayıcı:] modül:] fonksiyon [[koşul] eylem] İzlenecek veya listelenecek (-l seçeneği) fonksiyon adını belirtin. Karşılık gelen argüman sağlayıcı:modül:fonksiyon, modül:fonksiyon veya fonksiyon gibi izleme noktası tanımlama biçimlerinden herhangi birini içerebilir. Belirtilmeyen izleme noktası tanımlama alanları boş bırakılır ve bu alanlardaki değerlerden bağımsız olarak tüm izleme noktalarıyla eşleşir. Tanımlamada fonksiyon dışında hiçbir niteleyici belirtilmemişse karşılık gelen fonksiyona sahip tüm izleme noktaları eşleştirilir. -f argümanının sonuna isteğe bağlı bir D izleme noktası ifadesi eklenebilir. Komut satırında aynı anda birden fazla -f seçeneği belirtebilirsiniz.
-F: Fonksiyon girişini ve dönüşünü belirleyerek izleme çıktısını birleştirin. Fonksiyon giriş izleme noktası raporları girintilenir ve çıktılarına '->' ön eki eklenir. Fonksiyon dönüş izleme noktası raporlarının girintisi kaldırılır ve çıktılarına '<-' ön eki eklenir. Sistem çağrısı giriş izleme noktası raporları girintilenir ve çıktılarına '=>' ön eki eklenir. Sistem çağrısı dönüş izleme noktası raporlarının girintisi kaldırılır ve çıktılarına '<=' ön eki eklenir.-h: Belirtilen sağlayıcı tanımlarındaki izleme noktalarına karşılık gelen makroları içeren bir başlık (header) dosyası oluşturun. -o seçeneği mevcutsa, başlık dosyası bu seçeneğin argümanı olarak belirtilen yol adı kullanılarak kaydedilir. -o seçeneği mevcut değilse ve DTrace programı adı dosya_adi.d olan bir dosya içindeyse, başlık dosyası dosya_adi.h adı kullanılarak kaydedilir.-H: clang(1) çağrılırken (-C seçeneğiyle etkinleştirilir) dahil edilen dosyaların yol adlarını yazdırın. Bu seçenek, her clang(1) çağrısına -H seçeneğini geçirerek standart hataya her satırda bir tane olacak şekilde yol adlarının listesini görüntülemesini sağlar.
-i izleme_noktası_kimliği [[koşul] eylem]
İzlenecek veya listelenecek (-l seçeneği) izleme noktası tanımlayıcısını (izleme_noktası_kimliği) belirtin. İzleme noktası kimliklerini dtrace -l tarafından gösterildiği gibi ondalık tamsayılar kullanarak belirtebilirsiniz. -i argümanının sonuna isteğe bağlı bir D izleme noktası ifadesi eklenebilir. Aynı anda birden fazla -i seçeneği belirtebilirsiniz.
-I yol clang(1) çağrılırken (-C seçeneğiyle etkinleştirilir) #include dosyaları için arama yoluna belirtilen dizin yolunu ekleyin. Bu seçenek, her clang(1) çağrısına -I seçeneğini geçirir. Belirtilen yol, varsayılan dizin listesinden önce arama yoluna eklenir.
-l: İzleme noktalarını etkinleştirmek yerine listeleyin. Eğer -l seçeneği belirtilirse, dtrace; -P, -m, -f, -n, -i ve-s seçenekleri.: Bu seçeneklerin hiçbiri belirtilmemişse, tüm izleme noktalarını listeler.
-L yol DTrace kütüphaneleri için arama yoluna belirtilen dizin yolunu ekleyin. DTrace kütüphaneleri, D programları yazarken kullanılabilecek ortak tanımları içermek için kullanılır. Belirtilen yol, varsayılan kütüphane arama yolundan sonra eklenir.
-m [sağlayıcı:] modül [[koşul] eylem] İzlenecek veya listelenecek (-l seçeneği) modül adını belirtin. Karşılık gelen argüman sağlayıcı:modül veya modül gibi izleme noktası tanımlama biçimlerinden herhangi birini içerebilir. Belirtilmeyen izleme noktası tanımlama alanları boş bırakılır ve bu alanlardaki değerlerden bağımsız olarak tüm izleme noktalarıyla eşleşir. Tanımlamada modül dışında hiçbir niteleyici belirtilmemişse karşılık gelen bir modüle sahip tüm izleme noktaları eşleştirilir. -m argümanının sonuna isteğe bağlı bir D izleme noktası ifadesi eklenebilir. Komut satırında aynı anda birden fazla -m seçeneği belirtilebilir.
-n [[[sağlayıcı:] modül:] fonksiyon:] ad [[koşul] eylem] İzlenecek veya listelenecek (-l seçeneği) izleme noktası adını belirtin. Karşılık gelen argüman sağlayıcı:modül:fonksiyon:ad, modül:fonksiyon:ad, fonksiyon:ad veya ad gibi izleme noktası tanımlama biçimlerinden herhangi birini içerebilir. Belirtilmeyen izleme noktası tanımlama alanları boş bırakılır ve bu alanlardaki değerlerden bağımsız olarak tüm izleme noktalarıyla eşleşir. Tanımlamada ad dışında hiçbir niteleyici belirtilmemişse karşılık gelen ada sahip tüm izleme noktaları eşleştirilir. -n argümanının sonuna isteğe bağlı bir D izleme noktası ifadesi eklenebilir. Komut satırında aynı anda birden fazla -n seçeneği belirtilebilir.
-o çıktı -l seçenekleri veya izlenen verinin kendisi için çıktı dosyasını belirtin. Varsayılan çıktı dosyası d.out'tur.
-p pid: Belirtilen süreç kimliğini (pid) yakalayın, sembol tablolarını önbelleğe alın ve tamamlandığında çıkın. Komut satırında birden fazla -p seçeneği varsa dtrace, tüm komutlar sonlandığında çıkar ve sonlanan her bir süreç için çıkış durumunu bildirir. İlk süreç kimliği, komut satırında belirtilen veya -s seçeneği kullanılarak sunulan tüm D programlarına $target makro değişkeni aracılığıyla sağlanır.
-P sağlayıcı [[koşul] eylem] İzlenecek veya listelenecek (-l seçeneği) sağlayıcı adını belirtin. Geriye kalan modül, fonksiyon ve ad izleme noktası tanımlama alanları boş bırakılır ve bu alanlardaki değerlerden bağımsız olarak tüm izleme noktalarıyla eşleşir. -P argümanının sonuna isteğe bağlı bir D izleme noktası ifadesi eklenebilir. Komut satırında aynı anda birden fazla -P seçeneği belirtebilirsiniz.
-q: Sessiz modu ayarlayın. dtrace; belirtilen seçenekler ve D programları tarafından eşleşen izleme noktalarının sayısı gibi iletileri bastırır; sütun başlıklarını, CPU kimliğini, izleme noktası kimliğini yazdırmaz veya çıktıya yeni satırlar eklemez. Standart çıktıya yalnızca 'dtrace()' ve 'printf()' gibi D programı ifadeleri tarafından izlenen ve biçimlendirilen veriler görüntülenir.
-s betik Belirtilen D programı kaynak dosyasını derleyin. -e seçeneği mevcutsa, program derlenir ancak araçlandırma etkinleştirilmez. -l seçeneği mevcutsa, program derlenir ve onunla eşleşen izleme noktaları listelenir ancak araçlandırma etkinleştirilmez.
Eğer -e, -l veya -A seçeneklerinden hiçbiri mevcut değilse, D programı tarafından belirtilen araçlandırma etkinleştirilir ve izleme başlar.
-S: D derleyicisi ara kodunu gösterin. D derleyicisi, her bir D programı için oluşturulan ara kodun bir raporunu standart hataya üretir.
-U ad clang(1) çağrılırken (-C seçeneğiyle etkinleştirilir) belirtilen adı tanımsız yapın (undefine). Bu seçenek, her clang(1) çağrısına -U seçeneğini geçirir.
-v: Belirtilen bir D programı veya listelenen izleme noktaları için bir arayüz kararlılık raporu yazdırın. İzleme noktaları -l ile listeleniyorsa, her izleme noktasının tanımı, argümanları ve argüman türleri (varsa) hakkında rapor verin.-V: dtrace tarafından desteklenen en yüksek D programlama arayüzü sürümünü bildirin. Sürüm bilgisi standart çıktıya yazdırılır ve dtrace komutu çıkar.-w: D programlarında yıkıcı (destructive) eylemlere izin verin. -w olmadan dtrace, yıkıcı eylemler içeren bir D programının derlenmesine veya etkinleştirilmesine izin vermez. --w olsa bile, Sistem Bütünlüğü Koruması (System Integrity Protection) etkinse yıkıcı eylemlere izin verilmez.: Bkz. csrutil(8).
-W pname pname adlı sürecin başlamasını bekleyin. Başlatıldığında, sağlanan D betiğini derleyin ve etkinleştirin. Süreç çıktığında dtrace de çıkar. Komut satırında birden fazla -W seçeneği varsa dtrace, her süreci başlatıldıktan hemen sonra durdurur, tüm süreçler başlatıldığında izlemeyi başlatır ve tüm süreçler çıktıktan sonra çıkar. D programlarına yalnızca ilk belirtilen sürecin PID'si $target makro değişkeni aracılığıyla sağlanır. Bu seçeneğin kullanılması -Z seçeneğini otomatik olarak etkinleştirir.
-x arg[=değer] Bir DTrace çalışma zamanı (runtime) seçeneğini veya D derleyicisi seçeneğini etkinleştirin veya değiştirin. Boolean seçenekler, adları belirtilerek etkinleştirilir. Değerli seçenekler, seçenek adı ve değeri arasına eşittir işareti (=) konularak ayarlanır. Seçeneklerin eksiksiz listesi için EK SEÇENEKLER bölümüne bakın.
-Z: Sıfır izleme noktasıyla eşleşen izleme noktası tanımlarına izin verin. -Z seçeneği belirtilmemişse dtrace, D programı dosyalarında (-s seçeneği) veya komut satırında (-P, -m, -f, -n veya -i seçenekleri) belirtilen herhangi bir izleme noktası tanımı bilinen herhangi bir izleme noktasıyla eşleşmiyorsa hata bildirir ve çıkar.
Operands
D programlarında (-s seçeneğiyle veya komut satırında belirtilen) kullanılmak üzere bir dizi makro değişkenini ($1, $2 vb.) tanımlamak için dtrace komut satırında sıfır veya daha fazla ek argüman belirtilebilir.
C++ MANGLED NAMES Varsayılan olarak dtrace, C++ sembollerinin çözümlenmiş (demangled) adlarını kullanır. Komuta -xmangled seçeneğini geçirerek dtrace'e süslenmiş (mangled) sembol adlarını kullanmasını söyleyebilirsiniz.
Objective-C Provider
Objective-C sağlayıcısı pid sağlayıcısına benzer ve Objective-C sınıflarının ve metotlarının araçlandırılmasına olanak tanır. Objective-C izleme noktası belirteçleri aşağıdaki biçimi kullanır:
objcpid:[class-name[(category-name)]]:[[+|-]method-name]:[name]
pid Sürecin kimlik (ID) numarası.
class-name Çıkarılacak Objective-C sınıfının adı.
category-name Objective-C sınıfı içindeki kategorinin adı.
method-name Objective-C metodunun adı.
name İzleme noktasının adı; ‘entry’, ‘return’ veya metot içindeki bir tamsayı komut kaydırma değeri (instruction offset).
Objective-C Provider Examples
objc123:NSString:-*:entry 123 numaralı süreçteki NSString sınıfının her örnek (instance) metodu.
objc123:NSString(*)::entry 123 numaralı süreçteki NSString sınıfının her kategorisindeki her metot.
objc123:NSString(foo):+*:entry 123 numaralı süreçteki NSString sınıfının foo kategorisindeki her sınıf metodu.
objc123::-*:entry 123 numaralı süreçteki her sınıf ve kategorideki her örnek metodu.
objc123:NSString(foo):-dealloc:entry 123 numaralı süreçteki NSString sınıfının foo kategorisindeki dealloc metodu.
objc123::method?with?many?colons?:entry 123 numaralı süreçteki her sınıfta bulunan method:with:many:colons: metodu. (Objective-C metot adlarının içindeki iki nokta üst üste karakterlerini eşleştirmek için bir ? joker karakteri kullanılmalıdır; aksi takdirde bunlar sağlayıcı alan ayırıcıları olarak ayrıştırılır.)
BUILDING CODE CONTAINING USDT PROBES Koda USDT izleme noktaları ekleme işlemi, Solaris Dynamic Tracing Guide içinde belgelenenden biraz farklıdır. İzleme noktaları ekleme adımları aşağıdaki gibidir:
- Aşağıdaki biçimi kullanarak sağlayıcıyı adlandırın ve izleme noktalarını belirtin:
provider Example { probe increment(int); };
Bu, tek bir int argümanı alan, increment adında bir izleme noktasına sahip Example sağlayıcısını tanımlar. Sağlayıcılar birden fazla izleme noktası tanımlayabilir ve izleme noktaları birden fazla argüman alabilir.
- Sağlayıcı tanımını bir başlık (header) dosyası haline getirin.
Sağlayıcı tanımı, ObjC/C/C++ kodları tarafından kullanılabilir bir biçime dönüştürülmelidir. Bunu yapmak için dtrace komutu -h seçeneği ile çağrılmalıdır.
dtrace -h -s exampleProvider.d
Bu, exampleProvider.h adında bir başlık dosyası oluşturacaktır
- Uygulamaya izleme noktası çağrılarını ekleyin.
Sağlayıcıda tanımlanan her izleme noktası için, provider.h dosyası iki makro içerecektir. Adlandırma şu şekildedir:
PROVIDER_PROBENAME() PROVIDER_PROBENAME_ENABLED()
Example sağlayıcısında, increment izleme noktası şuna dönüşür:
EXAMPLE_INCREMENT() EXAMPLE_INCREMENT_ENABLED()
İzlenecek her konuma koda bir makro çağrısı yerleştirin. Bir izleme noktasına geçirilen argümanların hesaplanması maliyetliyse, izleme noktası yerleşimini şu şekilde koruyabilirsiniz:
if (EXAMPLE_INCREMENT_ENABLED()) { argument = /* Expensive argument calculation code here */; EXAMPLE_INCREMENT(argument); };
if testi yalnızca increment izleme noktası etkin olduğunda başarılı olacaktır.
- Programınızı normal şekilde derleyin ve bağlayın (link). Ek derleyici veya bağlayıcı bayrakları gerekli değildir.
Extra Options
Bu seçenekler, -x seçeneğine geçirilerek veya dtrace betiklerinde #pragma D option=value kullanılarak ayarlanabilir.
Derleme Zamanı Seçenekleri amin=attributes D programı yürütmesi için minimum kararlılık özniteliklerinin değerlerini ayarlayın. öznitelikler, ad-kararlılığı/veri-kararlılığı/bağımlılık-sınıfı biçiminde bir demettir. Geçerli arayüz ve veri kararlılığı öznitelik değerleri şunlardır:
• Internal: dtrace uygulama detaylarına yönelik arayüzler. Bu arayüzler alt sürümler arasında değişebilir.
• Private: belgelenmemiş işletim sistemi uygulama detaylarına yönelik arayüzler. Alt sürümler arasında değişebilir.
• Obsolete: gelecekteki bir sürümde kaldırılması planlanan, şu anda desteklenen özelliklerin arayüzleri.
• External: işletim sistemi satıcısı tarafından kontrol edilmeyen özelliklerin arayüzleri.
• Unstable: uyarı yapılmadan değişebilecek arayüzler.
• Evolving: Standart veya Kararlı (Stable) hale gelebilir ancak gelecekteki bir ana sürümde yine de değişebilir.
• Stable: Değişmemesi gereken olgun arayüz.
• Standard: Bir endüstri standardıyla uyumludur ve değişmeyecektir.
arch=value Hedef veri modelini ayarlayın. Şu anda desteklenen mimarilerin listesi için arch(1) kılavuzuna bakın. -arch seçeneğiyle aynı etkiye sahiptir.
argref Hata bildirmek yerine ek konumsal komut satırı argümanlarını yoksayın.
core Yürütme tamamlandıktan sonra dtrace'in exit(3) yerine abort(3) çağırmasına neden olun. Bazı sistemlerde bu bir çekirdek dökümü (core dump) oluşturur.
cpp D programlarını derlemeden önce üzerlerinde clang(1) içindeki C ön işlemcisini çalıştırın. -C seçeneğiyle aynı etkiye sahiptir.
cpphdrs Kullanılan her başlık dosyasının adını yazdırmak için clang(1)'e -H seçeneğini belirtin.
cpppath=path clang(1) ön işlemcisinin yolunu ayarlar
ctypes=path D derleme çalışmasının sonunda, tüm programlarda kullanılan tüm C türlerinin CTF tanımlarını yol içine yazın.
debug DTrace hata ayıklama (debug) iletilerini etkinleştirin.
defaultargs Belirtilmeyen makro argümanlarına referans verilmesine izin verin. Belirtilmeyen bir argüman için değer olarak 0 kullanın.
define Ön işlemcinin ön tanımlar ara belleğine örtük bir #define ekler. -D seçeneğiyle aynı etkiye sahiptir.
disallow_dsym Kullanıcı alanı sembolleştirmesi (symbolication) için dSYM dosyalarını kullanmayın.
droptags Bırakma (drop) türlerini açıklayan [DTRACE_DROP_$TYPE] değerleri olan bırakma etiketlerini bırakma etiketleri işleyicisine (varsayılan olarak stderr'e) yazdırır.
empty Boş D dosyalarının derlenmesine izin verin.
encoding=[ascii|utf8] Çıktı için kullanılan kodlamayı ayarlar. utf8, histogramlar için Unicode blok öğelerini gösterir.
errtags Varsayılan hata iletisinin önüne hata etiketleri ekleyin.
evaltime=[preinit|postinit] DTrace'in yeni bir süreci araçlandırmaya ne zaman başlayacağını kontrol edin (kütüphane başlatıcıları çalışmadan önce mi yoksa çalıştıktan sonra mı).
incdir=value Ön işlemcide dahil etme (include) dosyaları için arama yoluna belirtilen dizini ekleyin.
iregs=value DIF (DTrace Intermediate Format) tamsayı yazmaç (register) kümesinin boyutu. Varsayılan değer 8'dir.
late=[dynamic|static] Dinamik çeviricilere (translator) yönelik referanslara izin verilip verilmeyeceğini ayarlar.
libdir=path Kütüphane arama yoluna bir kütüphane dizini ekleyin.
mangled C++/Swift izleme noktaları için çözümlenmiş semboller yerine süslenmiş (mangled) sembolleri gösterin.
nolibs D sistem kütüphanelerini dahil etmeyin. dtrace sistem kütüphanesi tanımlayıcılarına erişimi engeller ancak DTrace'in başlatılmasını hızlandırır.
nojtanalysis Atlama tablosu (jump table) analizini devre dışı bırakın. pid sağlayıcısının varsayılan davranışı, atlama tabloları içeriyor gibi görünen fonksiyonlar için ‘return’ veya kaydırma (offset) izleme noktaları sağlamamaktır. "Atlama tabloları genellikle switch deyimleri için oluşturulur." Atlama tablosu analizini devre dışı bırakmak; uygunsuz yerleştirilmiş izleme noktalarına, veri bozulmasına veya hedef süreçte çökmelere neden olabilir.
noerror Hata iletilerini göstermeyin.
pgmax=value DTrace'in aynı anda yakalayabileceği maksimum süreç sayısını ayarlar. Varsayılan değer 8'dir.
preallocate=value[k|m] Betiği çalıştırmadan önce dtrace'te belleği önceden tahsis edin.
pspec Belirsiz belirteçleri izleme noktası adları olarak yorumlayın.
setenv=name=value Eğer ad ortamda zaten yoksa, başlatılan süreçlerin ortamına ad değişkenini ekler. ad ortamda zaten varsa, değeri değer olarak ayarlanır.
strip Yüklenemeyen bölümleri D programından çıkarın (strip).
tree=value dtrace derleyici ayrıştırma ağacını farklı aşamalarda (1|2|4) göstermek için bit eşlemi.
tregs=value DIF demet (tuple) yazmaç kümesinin boyutu. Bu, fonksiyonlara geçirilebilecek argüman sayısını kontrol eder. Varsayılan değer 8'dir.
undef=value Ön işlemcinin ön tanımlar ara belleğine örtük bir #undef değeri ekler.
unsetenv=name Varsa, başlatılan süreçlerin ortamından ad değişkenini silin.
verbose D derleyicisi ara kodunu (DIFO) gösterin. D derleyici, her bir D programı için üretilen ara kodun bir raporunu stderr(4)'e üretecektir. -S seçeneğiyle aynı etkiye sahiptir.
version DTrace betik dilinin belirli bir sürümünü talep edin. Bu, belirtilen sürümden daha yeni olan tüm tanımlayıcıları / çeviricileri / fonksiyonları devre dışı bırakacaktır.
zdefs Sıfır izleme noktasıyla eşleşen izleme noktası tanımlarına izin verin. -Z seçeneğiyle aynı etkiye sahiptir.
Çalışma Zamanı Seçenekleri aggsize=value [m|k] Toplulaştırma (aggregation) ara belleği boyutunu bayt, kibi veya mebibayt cinsinden ayarlar.
bufsize=value[m|k] Ana izleme ara belleği boyutunu ayarlar. -b seçeneğiyle aynı etkiye sahiptir.
buflimit=1-99 Erken ara bellek geçişlerinin yapılacağı ara bellek boyutu eşik yüzdesi. Varsayılan %75'tir.
bufpolicy=[ring|fill|switch] Ara bellek politikasını ayarlar. Varsayılan ara bellek politikası switch'tir.
bufresize=[auto|manual] Çekirdek yeterli bellek tahsis edemediğinde CPU başına ara bellek boyutunun yarıya indirilip indirilemeyeceğini ayarlar. Varsayılan değer auto'dur.
cleanrate=value[ns|us|ms|s|m|h|d|hz] Spekülatif (speculative) ara bellekler için temizleme oranı.
cpu=value İzlemenin etkinleştirileceği CPU.
destructive Yıkıcı eylemlere izin verin. -w seçeneğiyle aynı etkiye sahiptir.
dynvarsize=value Dinamik değişken alanı boyutu.
grabanon Anonim izleme durumunu üstlenin ve izleme verilerini görüntüleyin. -a seçeneğiyle aynı etkiye sahiptir.
nspec=value Spekülatif ara belleklerin sayısı.
specsize=value[k|m] Spekülasyon ara belleği boyutu.
stackframes=value Çekirdek geri izlemeleri (backtrace) için gösterilen yığın çerçevesi (stack frame) sayısı.
statusrate=value[ns|us|ms|s|m|h|d|hz] Kullanıcı alanı dtrace'inin durum için çekirdeği sorgulama (poll) sıklığı.
strsize=maxStringSize Maksimum dize (string) boyutu.
temporal=[true|false] Olayları zaman sırasına göre çıktılanacak şekilde sıralar. Varsayılan değer true'dur.
ustackframes=frameCount Kullanıcı alanı geri izlemeleri için gösterilen yığın çerçevesi sayısı.
Dinamik Çalışma Zamanı Seçenekleri agghist=file ... [true|false] Tüm toplulaştırmalar için bir histogram gösterir.
aggpack Toplulaştırmaları bir araya getirerek toplulaştırma başına yalnızca bir satır gösterir.
aggrate=value[us|ms|s|m|h|d|hz] Toplulaştırma ara belleği alım sıklığını ayarlar.
aggsortkey Toplulaştırmayı anahtar sırasına göre sıralar; eşitlik durumunda değere bakılır.
aggsortkeypos=value Çıktının sıralandığı toplulaştırma anahtarının konumu.
aggsortpos=value Çıktının sıralandığı toplulaştırma fonksiyonundaki argümanın konumu.
aggsortrev Toplulaştırmaları ters sırada sıralar.
aggzoom Histogramlardaki çubukların yüksekliğini, histogramın tam yüksekliği yerine en büyük değere sahip grubun (bucket) oranına göre ölçeklendirir.
flowindent Fonksiyon giriş/çıkışlarını -> / <- ile girintiler. -F seçeneyle aynı etkiye sahiptir.
quiet Yalnızca açıkça izlenen verileri çıktı olarak verir. -q seçeneğiyle aynı etkiye sahiptir.
rawbytes tracemem çıktısını her zaman onaltılık (hexadecimal) olarak yazdırır.
stackindent stack() veya ustack() çıktısını girintilerken kullanılacak boşluk karakteri sayısı.
stacksymbols=frameCount[true|false] Yığın sembollerinin sembolleştirilip (symbolicated) sembolleştirilmeyeceği. Varsayılan değer true'dur.
switchrate=value[ns|us|ms|s|m|h|d|hz] Ana ara bellek geçiş sıklığı.
Desteklenen Yerleşik Değişkenler
dtrace aşağıdaki yerleşik, salt okunur değişkenleri sağlar.
uint64_t arg0-arg9 Geçerli izleme noktası çağrısının işaretsiz 64-bit tamsayılar olarak temsil edilen argümanları. syscall, mach_trap, fbt ve pid sağlayıcılarının ‘entry’ izleme noktası eylemlerinde, bu değişkenler izlenen fonksiyonun argümanlarını içerir. fbt ve pid sağlayıcılarının ‘return’ izleme noktası eylemlerinde, arg0 fonksiyonun döndüğü komut kaydırma değerini (fonksiyonun içine doğru) içerir ve arg1 fonksiyonun dönüş değerini içerir. syscall ve mach_trap sağlayıcılarının ‘return’ izleme noktası eylemlerinde, hem arg0 hem de arg1 fonksiyonun dönüş değerine ayarlanır. profile ve tick sağlayıcıları arg1'i, eylem tetiklendiğinde çalışan komutun adresine ayarlar.
args[] Mevcutsa, geçerli izleme noktasının türü belirtilmiş argümanları. Bkz. -v.
uint64_t caller Geçerli fonksiyonu çağıran komutun çekirdek (kernel) adresi. DTrace eylemleri her zaman çekirdek bağlamından çağrıldığından, izleme noktaları kullanıcı alanından tetiklense bile bu değişken sıfırdan farklıdır.
processorid_t cpu Bu izleme noktası eyleminin tetiklendiği mantıksal CPU'nun tamsayı tanımlayıcısı.
uint64_t cpucycles (Darwin-specific) Geçerli CPU üzerinde geçen CPU döngüsü sayısı. Ayrıca bkz. vcycles.
uint64_t cpuinstrs (Darwin-specific) Mevcutsa, geçerli mantıksal CPU tarafından tamamlanan ("retired") komut sayısı. Bu sayı, işlemci tarafından spekülatif olarak verilen ve aslında çalıştırılması gerekmeyen komutları hariç tutar. Ayrıca bkz. vinstrs.
thread_t curthread Geçerli izleme noktası eylemini tetikleyen iş parçacığına karşılık gelen işletim sistemi iş parçacığı (thread) yapısının adresi.
user_addr_t dispatchqaddr (Darwin-specific) Eğer izleme noktası eylemi, bir dağıtım kuyruğu (dispatch queue) içeren bir kullanıcı alanı bağlamından tetiklendiyse, bu kuyruğun adresi.
uint_t id Geçerli izleme noktasının çalışan işletim sistemi içindeki benzersiz tanımlayıcısı (-l ile gösterildiği gibi).
uint_t epid Mevcut D programı içindeki geçerli izleme noktası eyleminin etkinleştirilmesini temsil eden benzersiz bir tanımlayıcı. Bir eylem birden fazla izleme noktasıyla eşleşebilir.
int errno Geçerli iş parçacığında gerçekleştirilen son sistem çağrısı tarafından döndürülen hata değeri.
string execname Geçerli süreç adı.
gid_t gid Geçerli sürecin birincil grup kimliği (GID).
uint_t ipl Geçerli kesme (interrupt) seviyesi. Darwin üzerinde ya 0 ya da 1'dir.
uint64_t machtimestamp (Darwin-specific) Geçerli mach_absolute_time() zaman damgası.
uint64_t machctimestamp (Darwin-specific) Geçerli mach_continuous_time() zaman damgası.
pid_t pid Geçerli sürecin süreç kimliği (PID).
pid_t ppid Geçerli sürecin üst (parent) süreç kimliği.
string probeprov, probemod, probefunc, probename Sırasıyla geçerli izleme noktasının sağlayıcı, modül, fonksiyon ve ad bilgisi. Bkz. -n.
uint32_t stackdepth Geçerli iş parçacığındaki çekirdek modu yığın çerçevesi sayısı.
id_t tid Geçerli iş parçacığının iş parçacığı kimliği (TID).
uint64_t timestamp Geçmişteki sistem genelinde sabit bir noktadan itibaren nanosaniye cinsinden geçerli değer.
uid_t uid Geçerli sürecin kullanıcı kimliği (UID).
uint64_t ucaller Şu anda çalışan fonksiyonun çağrıldığı kullanıcı alanı adresi veya fonksiyon çekirdekten çağrıldıysa sıfır.
uint32_t ustackdepth Geçerli iş parçacığındaki kullanıcı alanı yığın çerçevesi sayısı.
uint64_t uregs[] Kullanıcıdan çekirdek yürütmesine son geçişten hemen önce geçerli iş parçacığının yazmaç değerleri. /usr/lib/dtrace/regs* dizideki her bir yazmacın değerinin indeksleri için sabitleri sağlar.
uint64_t vmregs[] Mevcutsa, geçerli sanal makine yazmaçları.
uint64_t vcycles (Darwin-specific) Geçerli iş parçacığı çalışırken geçen CPU döngüsü sayısı. Bu değer, bu iş parçacığıyla kesmeler işlenirken geçen döngüleri de içerir. Ayrıca bkz. cpucycles.
uint64_t vinstrs (Darwin-specific) Mevcutsa, geçerli iş parçacığı tarafından tamamlanan komut sayısı. Bu değer, bu iş parçacığıyla kesmeler işlenirken tamamlanan komutları da içerir. Ayrıca bkz. cpuinstrs.
uint64_t vtimestamp Geçerli iş parçacığının herhangi bir CPU üzerinde çalışarak geçirdiği nanosaniye cinsinden süre.
uint64_t walltimestamp Unix Başlangıcından (Unix Epoch - 1 Ocak 1970 00:00 UTC) itibaren geçen nanosaniye sayısı.
Desteklenen Alt Programlar
D alt programları (subroutine) yalnızca dahili D program durumunu etkileyebilir. Birçok D alt programının, mevcut D program ifadesinin dışında hiçbir etkisi yoktur.
const char* argümanları, D dize nesnelerini veya C dizelerine yönelik işaretçileri (pointer) kabul eder. C dizelerinin bir NUL (0) baytı ile sonlandırıldığı varsayılır. DTrace işaretçileri, aksi belirtilmedikçe çekirdek sanal adres alanını referans alır.
Bir dizi DTrace alt programı geçici nesneler (scratch objects) döndürür. Bu geçici nesneler yalnızca hemen sarmalayan D program ifadesinin geçerli çağrısı için geçerlidir.
void* alloca(size_t* nbytes) nbytes boyutunda yeni bir geçici ara bellek oluşturun.
string basename(const char* pathstr) pathstr dizesinin ‘/’ ile ayrılmış son bileşenini yeni bir geçici dizeye kopyalayın.
void bcopy(void* src, void* scratch, size_t size) src adresinden mevcut geçici ara bellek olan scratch konumuna size bayt kopyalayın.
string cleanpath(const char* pathstr) pathstr dizesinin standart (canonical) bir temsilini yeni bir geçici dizeye kopyalayın. Sonuç dizesi herhangi bir gereksiz veya yinelenen ‘./’ veya ‘../’ alt dizeleri içermeyecektir.
void* copyin(user_addr_t src, size_t size) Geçerli kullanıcı alanı adresi src konumundan yeni bir geçici ara belleğe size bayt kopyalayın.
string copyinstr(user_addr_t src, [size_t maxchars]) Geçerli kullanıcı alanı adresi src konumundan yeni bir geçici dizeye NUL ile sonlandırılmış bir C dize kopyalayın. maxchars belirtilirse, kopyalanabilecek toplam karakter sayısını sınırlar. Belirtilmezse, çalışma zamanı seçeneği olan strsize kopyalanan maksimum karakter sayısını sınırlandıracaktır.
void copyinto(user_addr_t src, size_t size, void *scratch) Geçerli kullanıcı alanı adresi src konumundan mevcut geçici ara bellek scratch konumuna size bayt kopyalayın.
string dirname(const char *pathstr) pathstr dizesinin ‘/’ ile ayrılmış son bileşeni hariç tümünü yeni bir geçici dizeye kopyalayın.
major_t getmajor(dev_t dev) dev için ana (major) aygıt numarasını çıkarın.
minor_t getminor(dev_t dev) dev için alt (minor) aygıt numarasını çıkarın.
uint32_t htonl(uint32_t hostlong) hostlong değerini ana bilgisayar bayt sırasından (host byte order) ağ bayt sırasına (network byte order) dönüştürün.
uint64_t htonll(uint64_t hostlonglong) hostlonglong değerini ana bilgisayar bayt sırasından ağ bayt sırasına dönüştürün.
uint16_t htons(uint16_t hostshort) hostshort değerini ana bilgisayar bayt sırasından ağ bayt sırasına dönüştürün.
int index(const char* str, const char* searchstr, [int start]) İsteğe bağlı olarak aramayı start karakter konumundan başlatarak, searchstr dizesinin str içindeki ilk geçtiği karakter konumunu (offset) döndürün.
int rindex(const char* str, const char* searchstr, [int start]) İsteğe bağlı olarak ters aramayı start karakter konumundan başlatarak, C dizesi searchstr'nin str içindeki son geçtiği karakter konumunu döndürün.
string inet_ntoa(uint32_t* addr) addr tarafından işaret edilen IPv4 adresini noktalı ondalık (dotted-decimal) gösterimle temsil eden geçici bir dize oluşturun.
string inet_ntoa6(struct in6_addr* addr) addr tarafından işaret edilen IPv6 adresini sıfır sıkıştırmalı çift noktalı üst üste onaltılık gösterimle (özellikle RFC 1884 kuralı 2) temsil eden geçici bir dize oluşturun.
string inet_ntop(int addrfamily, void *addr) addr tarafından işaret edilen addrfamily türündeki IP adresini temsil eden geçici bir dize oluşturun. addrfamily için geçerli değerler AF_INET ve AF_INET6'dır.
string json(string payload, string selector) payload içinde saklanan bir JSON nesnesinden selector tarafından temsil edilen tek bir değeri çıkarın. Öğe seçiciler (selectors) şunları destekler:
• Anahtarlar için basit dizeler, örneğin key
• İç içe geçmiş nesneler için nokta ile ayrılmış anahtarlar, örneğin object.key
• Dizi indeksleme, örneğin object.key[2].anotherkey
string lltostr(int64_t val, [int baseN]) val değerini tabanN tabanında temsil eden geçici bir dize oluşturun.
uint32_t ntohl(uint32_t netlong) netlong değerini ağ bayt sırasından ana bilgisayar bayt sırasına dönüştürün.
uint64_t ntohll(uint64_t netlonglong) netlonglong değerini ağ bayt sırasından ana bilgisayar bayt sırasına dönüştürün.
uint16_t ntohs(uint16_t netshort) netshort değerini ağ bayt sırasından ana bilgisayar bayt sırasına dönüştürün.
int progenyof(pid_t pid) Çağıran sürecin pid değerine ulaşan bir üst süreç zinciri varsa sıfırdan farklı bir değer döndürün.
int rand() Pozitif bir sahte rastgele (pseudo-random) sayı döndürün. Bu sayıları tahmin etmek kolay olduğundan kriptografik amaçlar için kullanılmamalıdır.
int speculation() speculate() ile kullanılmak üzere spekülatif bir ara bellek oluşturun ve bu ara belleğin tanımlayıcısını döndürün. Ayrıca bkz. commit().
string strchr(const char* str, char c) str c karakterini içeriyorsa, c'nin ilk geçtiği yerden başlayıp str'nin sonuna kadar olan karakterleri yeni bir geçici dizeye kopyalayın. c mevcut değilse NULL döndürün.
void* strip(void *ptr, uint8_t key) Kodlanmış işaretçileri (encoded pointers) destekleyen platformlarda, geçerli bir işaretçi üretmek için ptr'den işaretçi doğrulama (pointer authentication) bitlerini ayıklar. key için geçerli değerler ptrauth.h içinde bulunabilir.
string strrchr(const char* str, char c) strchr() gibidir, ancak c'nin son geçtiği yerden başlar.
size_t strlen(const char* str) str dizesinin bayt cinsinden uzunluğunu hesaplayın.
string strjoin(const char* str1, const char* str2) str1 ve str2 dizelerini yeni bir geçici dizede birleştirin.
int64_t strtoll(const char *str, [int base]) str dizesini işaretli bir tamsayıya dönüştürür; sağlanmışsa taban tabanında, aksi takdirde 10 tabanında yorumlanır.
string strstr(const char* str, const char* prefix) str prefix dizesini içeriyorsa, prefix'ten dize sonuna kadar olan karakterleri yeni bir geçici dizeye kopyalayın. prefix mevcut değilse NULL döndürün.
string strtok(const char* str, const char *delimchars) strtok(3) gibidir; str dizesini, delimchars içindeki karakterlerden herhangi birine göre bölerek birden çok alt dizeye ayırır. Eğer str NULL değilse, ilk belirteci (token) döndürün. Eğer str NULL ise, en son sağlanan dizeden bir sonraki belirteci döndürün. delimchars sonraki çağrılarda değiştirilebilir. str'nin henüz belirteçlere ayrılmamış kısmında delimchars içinden hiçbir karakter bulunmuyorsa NULL döndürün.
string substr(const char* str, int start, [int length]) str içindeki karakterleri, start karakter konumundan başlayarak dize sonuna kadar yeni bir geçici dizeye kopyalayın. uzunluk, yeni dizeye kopyalanan karakter sayısını sınırlamak için kullanılabilir.
string tolower(const char *str) Tüm büyük harfleri küçük harf karşılıklarıyla değiştirerek str dizesini yeni bir geçici dizeye kopyalayın.
uint64_t mtons(uint64_t time) (Darwin-specific) machtimestamp veya machctimestamp zaman değerini nanosaniyeye dönüştürün.
string toupper(const char* str) Tüm küçük harfleri büyük harf karşılıklarıyla değiştirerek str dizesini yeni bir geçici dizeye kopyalayın.
void* vm_kernel_addrperm(void* addr) (Darwin-specific) Ham çekirdek adresi addr konumuna karşılık gelen değiştirilmemiş (veya "slid edilmemiş") adresi hesaplayın. Varsayılan olarak DTrace, ham çekirdek adreslerini kullanır, izler ve yazdırır. Değiştirilmemiş adresler, kextstat(8) içinde gösterilenler gibi kullanıcı tarafından görülebilen diğer adreslerle eşleşecektir. Varsayılan Sistem Bütünlüğü Koruması (System Integrity Protection) ayarlarıyla D programlarının çekirdek adres değerlerine veya çekirdek bellek içeriklerine erişmesine izin verilmez. Ayarları değiştirmek için csrutil(8) kullanılabilir.
Desteklenen Eylemler
DTrace eylemleri, bir D programının çalışan sistemle etkileşime girmesini sağlar. En zararsız eylemler verileri bir DTrace ara belleğine kaydeder. Yıkıcı eylemlerin sistem üzerinde etkileri vardır ve -w ile etkinleştirilmelidir.
void* işaretçileri, D geçici ara belleklerine veya çekirdek sanal adreslerine atıfta bulunabilir.
void breakpoint() (yıkıcı) Çekirdeği durdurun ve bir hata ayıklayıcı (debugger) bekleyin.
void chill(int nsecs) (yıkıcı) Belirtilen nanosaniye süresi boyunca DTrace içinde döngüde kalın (spin). Bu eylemin, gerçek zamanın (wall clock time) her bir saniyesinin 500 ms'den fazlası boyunca döngüde kalması istenirse bir hata bildirilir.
void clear(@aggr) @aggr içindeki tüm değerleri temizleyin. Anahtarlar korunur. Ayrıca bkz. trunc().
void commit(int specid) spekülatif ara bellek specid içeriğini ana izleme ara belleğine kopyalayın.
void copyout(void *src, user_addr_t *dst, size_t size) (yıkıcı) src ara belleğinden geçerli adres alanı adresi dst konumuna size bayt kopyalayın.
void copyoutstr(void *src, user_addr_t *dst, size_t maxbytes) (yıkıcı) src konumundan geçerli kullanıcı adres alanı adresi dst konumuna, maxbytes değerinden fazlasını kopyalamadan, NUL ile sonlandırılmış bir C dizesi kopyalayın.
void discard(int specid) spekülatif ara bellek specid içeriğini atın.
void exit(int status) İzlemeyi durdurun, dtrace'in son sonuçları yazdırmasını sağlayın ve status durumuyla çıkın.
void freopen(const char* path) (yıkıcı) path yolunu açın ve dtrace'in standart çıktısıyla ilişkilendirin (daha önce ilişkilendirilmiş olan dosyaları kapatarak).
void ftruncate() dtrace'in standart çıktısını (stdout) kırpın (truncate).
void kdebug_trace(uint32_t debugid, [uint64_t arg1], [uint64_t arg2], [uint64_t arg3], [uint64_t arg4]) (yıkıcı, Darwin'e özgü) kdebug izine bir olay yayınlayın; argümanlar isteğe bağlıdır ve varsayılan olarak sıfırdır. debugid, sys/kdebug.h içinde tanımlanmış dört parçalı bir bit alanıdır.
void kdebug_trace_string(uint32_t debugid, uint64_t str_id, const char* str) (yıkıcı, Darwin'e özgü) str_id ile tanımlanan bir dizeyi kdebug izine yayınlayın. debugid, kdebug_trace() ile aynıdır.
_symaddr func(user_addr_t addr) Çekirdek adresi addr konumuna karşılık gelen sembol adını yazdırın.
_symaddr mod(user_addr_t addr) Çekirdek adresi addr konumuna karşılık gelen modül adını yazdırın.
void normalize(@aggr, int factor) @aggr izlendiğinde, tüm değerleri factor değerine bölünecektir.
void denormalize(@aggr) @aggr üzerindeki her türlü normalizasyon faktörünü kaldırın. Bu toplulaştırmayı izlemek toplam sayıları döndürecektir.
void panic() (yıkıcı) Çekirdeği genel bir iletiyle panik durumuna (panic) geçirin.
void print(expression) Türler ve dahili veri yapıları dahil olmak üzere ifadeyi düzgün biçimde yazdırın (pretty-print). Çıktıya yeni bir satır eklenecektir.
void printa([Ft string format], @aggr) @aggr toplulaştırmasını düzgün biçimde yazdırın. format, toplulaştırmanın anahtarlarına sırasıyla atıfta bulunabilir. Toplulaştırma değerine ‘@’ bayrağı ile erişilebilir. Örneğin, her satıra bir tane olacak şekilde sadece toplulaştırma değerlerini yazdırmak için: printa("%@u\n", @a);
void printf(string format, ...) printf(3) gibi özel biçimlendirilmiş bir dize yazdırın.
void raise(int signum) (yıkıcı) Geçerli sürece signum sinyalini gönderin.
void setopt(const char* option, [const char* value]) Dinamik bir çalışma zamanı seçeneği ayarlayın. Bkz. Dinamik Çalışma Zamanı Seçenekleri.
void speculate(int specid) spekülatif ara bellek olan specid değerini, geçerli D program ifadesindeki sonraki tüm izlemeler için hedef olarak ayarlayın.
stack stack([int nframes]) nframes derinliğine kadar bir çekirdek yığın izini (stack trace) kaydedin. nframes belirtilmemişse, stackframes çerçevesine kadar kaydedin. Ayrıca bkz. Çalışma Zamanı Seçenekleri.
void stop() (yıkıcı) Geçerli kullanıcı sürecini durdurun.
void pidresume(pid_t pid) (yıkıcı, Darwin'e özgü) pid ile belirtilen süreci devam ettirin. Ayrıca bkz. stop() ve raise().
_symaddr sym(user_addr_t addr) Çekirdek adresi addr için sembol adını yazdırın.
void system(string program, ...) (yıkıcı) program programını, dtrace ile aynı ortamda sağlanan argümanlarla başlatın.
void trace(expression) ifadeyi yazdırın. Yeni satır eklenmez.
void tracemem(addr, size_t nbytes) Çekirdek adresi addr konumundan başlayarak nbytes baytın onaltılık (hexadecimal) gösterimini yazdırın.
void trunc(@aggr, [topn]) @aggr toplulaştırmasından anahtarları ve bunlara karşılık gelen değerleri atın, isteğe bağlı olarak en yüksek topn değerini ve bunlara karşılık gelen anahtarları koruyun.
_usymaddr uaddr(user_addr_t addr) Mevcutsa, geçerli kullanıcı alanı adresi addr hakkında sembol bilgisini düzgün biçimde yazdırın. Bu bilgi uygulanabilir modül, fonksiyon ve sembol adlarının yanı sıra kod için fonksiyonların içine doğru kaydırma değerlerini (offsets) içerecektir. Mevcut veya uygulanabilir değilse, sadece addr değerini yazdırın.
_usymaddr usym(user_addr_t addr) Mevcutsa, geçerli sürecin kullanıcı adres alanında addr değerini temsil eden sembolün adını yazdırın. Aksi takdirde, addr değerini yazdırın.
_usymaddr ufunc(user_addr_t addr) Eğer addr, geçerli kullanıcı alanı sürecinde bilinen bir fonksiyonun sınırları içindeyse, fonksiyonun adını yazdırın. Aksi takdirde, addr değerini yazdırın.
_usymaddr umod(user_addr_t addr) Eğer addr, geçerli kullanıcı alanı sürecinde bilinen bir modülün sınırları içindeyse, modülün adını yazdırın. Aksi takdirde, addr değerini yazdırın.
stack ustack([int nframes]) nframes derinliğine kadar bir kullanıcı yığın izini kaydedin. nframes belirtilmemişse, ustackframes çerçevesine kadar kaydedin. Ayrıca bkz. Çalışma Zamanı Seçenekleri.
Çıkış Durumu
Aşağıdaki çıkış durumları döndürülür:
0 Başarılı tamamlanma.
D program istekleri için, 0 çıkış durumu, programların başarıyla derlendiğini, izleme noktalarının başarıyla etkinleştirildiğini veya anonim durumun başarıyla alındığını gösterir. dtrace, belirtilen izleme istekleri hatalarla veya veri kayıplarıyla (drops) karşılaşsa bile 0 döndürür.
1 Bir hata oluştu.
D program istekleri için, 1 çıkış durumu, program derlemesinin başarısız olduğunu veya belirtilen isteğin karşılanamadığını gösterir.
2 Geçersiz komut satırı seçenekleri veya argümanları belirtildi.
Ayrıca Bkz.
clang(1), bitesize.d(1m), cpuwalk.d(1m), csrutil(8), diskhits(1m), dtruss(1m), errinfo(1m), execsnoop(1m), iofile.d(1m), iofileb.d(1m), iopattern.d(1m), iopending.d(1m), iosnoop(1m), iotop(1m), kill.d(1m), lastwords(1m), newproc.d(1m), opensnoop(1m)
How to Use Oracle Solaris DTrace from Oracle Solaris and OpenSolaris System, Oracle Corporation, 2010, http://www.oracle.com/technetwork/server-storage/solaris10/solaris-dtrace-wp-167895.pdf.
Solaris Dynamic Tracing Guide, Oracle Corporation, 2010, http://docs.oracle.com/cd/E19253-01/817-6223/.