Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bilgi kuyruğu, hata ayıklama iletilerini depolayan, alan ve filtreleyen bir arabirim tarafından yönetilir (bkz. ID3D10InfoQueue Arabirimi). Kuyruk şunlardan oluşur: bir ileti kuyruğu, isteğe bağlı bir depolama filtresi yığını ve isteğe bağlı alma filtre yığını. Depolama filtresi yığını, depolanmasını istediğiniz iletileri filtrelemek için kullanılabilir; alma-filtre yığını, depolanmasını istediğiniz iletileri filtrelemek için kullanılabilir. Bir iletiyi filtreledikten sonra, ileti hata ayıklama penceresine yazdırılır ve uygun yığında depolanır.
Genelde:
- Kullanıcı tanımlı iletiler oluşturmak için ID3D10InfoQueue::AddApplicationMessageçağrısı yapın
- ID3D10InfoQueue::GetMessage çağrısı, (isteğe bağlı alma filtresinden geçen) iletileri almak için kullanılır.
Kayıt Defteri Denetimleri
Filtre ayarlarını ayarlamak, kesme noktalarını ayarlamak ve hata ayıklama çıkışını kapatmak için kayıt defteri anahtarlarını kullanın. Hata ayıklama katmanı, kayıt defteri anahtarları için bu yolları denetler; bulunan ilk yol kullanılır.
- HKCU\Software\Microsoft\Direct3D\<kullanıcı tanımlı alt anahtar>
- HKLM\Software\Microsoft\Direct3D\<kullanıcı tanımlı alt anahtar>
- HKCU\Software\Microsoft\Direct3D
Nerede:
- HKCU, HKEY_CURRENT_USER anlamına gelir ve HKLM ise HKEY_LOCAL_MACHINE anlamına gelir.
- <kullanıcı tanımlı alt anahtar>, bir uygulamanın hata ayıklama ayarlarını depolamak için rastgele bir addır
Kayıt Defteri Anahtarlarını Kullanarak Hata Ayıklama İletilerini Filtreleme
Kayıt defteri bir InfoQueueStorageFilterOverride anahtarı içeriyorsa (ve sıfır değilse), iletiler (ve hata ayıklama çıkışı) aşağıdaki kayıt defteri denetimleri eklenerek filtrelenebilir.
- DWORD Mute_CATEGORY_* - Bu anahtar sıfır değilse hata ayıklama çıktısı.
- DWORD Mute_SEVERITY_* - Bu anahtar sıfır değilse hata ayıklama çıkışı devre dışı bırakılır.
- DWORD Mute_ID_* - İleti adı veya numarası * için kullanılabilir (daha önce açıklanan BreakOn_ID_* için olduğu gibi). Bu anahtar sıfır değilse hata ayıklama çıkışı devre dışı bırakılır.
- DWORD Unmute_SEVERITY_INFO - Bu anahtar sıfır değilse hata ayıklama çıktısı ETKİNLEŞTİRİLİR. InfoQueueStorageFilterOverride etkinleştirildiğinde varsayılan olarak önem derecesi BİLGİ olan hata ayıklama iletileri sessize alınır; bu nedenle bu anahtar, BİLGİ'nin yeniden etkinleştirilmesine izin verir.
Bu denetimler bir iletinin kaydedilip kaydedilmeyeceğini veya görüntüleneceğini değiştirir; api'nin geçip geçmeyeceğini veya başarısız olup olmadığını etkilemez.
Kayıt Defteri Anahtarlarını Kullanarak Kesme Koşullarını Ayarlama
Uygulamalar, belirli bir mesajda durmaya zorlanmak için aşağıdaki kayıt defteri anahtarları kullanılarak ayarlanabilir.
EnableBreakOnMessage - Bu anahtar, iletilerde durma noktasını etkinleştirir (ve i'nin SetBreakOnCategory()/SetBreakOnSeverity()/SetBreakOnID() ayarlarının göz ardı edilmesine neden olur). Kırılacak olan gerçek iletiler, aşağıda tanımlanan bir veya daha fazla BreakOn_* değeri kullanılarak tanımlanır.
- BreakOn_CATEGORY_* - Depolama filtrelerinden geçen herhangi bir iletinin kesilmesi. * D3D10_MESSAGE_CATEGORY mesajlarından biridir.
- BreakOn_SEVERITY_* - Depolama filtrelerinden geçen her mesajda durdurma işlemi yap. * D3D10_MESSAGE_SEVERITY_ mesajlarından biridir.
- BreakOn_ID_* - Depolama filtrelerini geçen tüm iletilerde duraksama. * D3D10_MESSAGE_ID_ iletilerden biridir veya hata numaralandırmasının sayısal değeri olabilir. Örneğin, "D3D10_MESSAGE_ID_HYPOTHETICAL" kimliğine sahip iletinin D3D10_MESSAGE_ID numaralandırmasında 123 değerine sahip olduğunu varsayalım. Bu durumda, BreakOn_ID_HYPOTHETICAL=1 veya BreakOn_ID_123=1 değerinin oluşturulması aynı şeyi gerçekleştirir; D3D10_MESSAGE_ID_HYPOTHETICAL kimliğine sahip bir iletiyle karşılaşıldığında kesme.
Kayıt Defteri Anahtarlarını Kullanarak Hata Ayıklama Çıkışını Kapatma
Hata ayıklama çıktısı MuteDebugOutput anahtarı kullanılarak kapatılabilir. Bu değerin kayıt defterinde bulunması, InfoQueue'nun ID3D10InfoQueue::SetMuteDebugOutput yöntemini geçersiz kılmaya zorlar. MuteDebugOutput, depolama filtresini geçiren iletilerin hata ayıklama çıkışına gönderilmesini durdurur.
Hata Ayıklama Katmanı İletilerini Devre Dışı Bırakma
ID3D10InfoQueue::AddStorageFilterEntrieskullanılarak filtreler belirtilerek hata ayıklama katmanı iletileri tek tek veya çalışma zamanında bir grup olarak devre dışı bırakılabilir. ID3D10InfoQueue::AddStorageFilterEntries için pFilter bağımsız değişkeni, bir izin verme listesi ve bir reddetme listesi içeren D3D10_INFO_QUEUE_FILTER yapısını alır. İzin verme ve reddetme listeleri, filtrelemenin catergory, önem derecesi ve tek tek ileti kimliğiyle belirtilmesine izin veren D3D10_INFO_QUEUE_FILTER_DESC yapıları tarafından açıklanır.
Aşağıdaki kod, D3D10_MESSAGE_ID_DEVICE_DRAW_INDEX_BUFFER_TOO_SMALL iletisini reddetmek için ID3D10InfoQueue Arabirimiayarlama örneğidir.
//retrieve the ID3D10InfoQueue from a Direct3D device created with the D3D10_CREATE_DEVICE_DEBUG flag
ID3D10InfoQueue * pInfoQueue;
g_pd3dDevice->QueryInterface( __uuidof(ID3D10InfoQueue), (void **)&pInfoQueue );
//set up the list of messages to filter
D3D10_MESSAGE_ID messageIDs [] = { D3D10_MESSAGE_ID_DEVICE_DRAW_INDEX_BUFFER_TOO_SMALL };
//set the DenyList to use the list of messages
D3D10_INFO_QUEUE_FILTER filter = { 0 };
filter.DenyList.NumIDs = 1;
filter.DenyList.pIDList = messageIDs;
//apply the filter to the info queue
pInfoQueue->AddStorageFilterEntries( &filter );
İlgili konular