Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Frontu informací spravuje rozhraní (viz ID3D10InfoQueue Interface), které ukládá, načítá a filtruje ladicí zprávy. Fronta se skládá z: fronty zpráv, volitelného zásobníku filtru úložiště a volitelného zásobníku filtru načítání. Zásobník filtru úložiště lze použít k filtrování zpráv, které chcete uložit; Zásobník filtru načítání lze použít k filtrování zpráv, které chcete uložit. Jakmile vyfiltrujete zprávu, zpráva se vytiskne do okna ladění a uloží se do příslušného zásobníku.
Obvykle:
- Pro generování zpráv definovaných uživatelem použijte volání ID3D10InfoQueue::AddApplicationMessage.
- Volání ID3D10InfoQueue::GetMessage slouží k získání zpráv (které projdou volitelným filtrem načítání).
Ovládací prvky registru
Pomocí klíčů registru můžete upravit nastavení filtru, upravit body přerušení a ztlumit výstup ladění. Ladicí vrstva zkontroluje tyto cesty, zda obsahují klíče registru; použije se první nalezená cesta.
- HKCU\Software\Microsoft\Direct3D\<uživatelem definovaný podklíč>
- HKLM\Software\Microsoft\Direct3D\<uživatelem definovaný podklíč>
- HKCU\Software\Microsoft\Direct3D
Kde:
- HKCU stojí pro HKEY_CURRENT_USER a HKLM stojí pro HKEY_LOCAL_MACHINE.
- <podklíč definovaný uživatelem> je libovolný název pro uložení ladicích nastavení pro aplikaci.
Filtrování ladicích zpráv pomocí klíčů registru
Pokud registr obsahuje klíč InfoQueueStorageFilterOverride (a není nulový), můžete zprávy (a výstup ladění) filtrovat přidáním následujících ovládacích prvků registru.
- DWORD Mute_CATEGORY_* – výstup ladění, pokud hodnota tohoto klíče není nulová.
- DWORD Mute_SEVERITY_* – Výstup ladění je zakázán, pokud tento klíč není nulový.
- DWORD Mute_ID_* – Název zprávy nebo číslo lze použít pro * (stejně jako pro BreakOn_ID_* popsané výše). Výstup ladění je zakázán, pokud tento klíč není nulový.
- DWORD Unmute_SEVERITY_INFO – Výstup ladění je povolený, pokud tento klíč není nulový. Ve výchozím nastavení, když je povolena funkce InfoQueueStorageFilterOverride, jsou zprávy se závažností INFO ztlumeny - tento klíč tedy umožňuje znovu zapnout INFO.
Tyto ovládací prvky mění, zda je zpráva zaznamenána nebo zobrazena; nemají vliv na to, jestli rozhraní API projde nebo selže.
Nastavení podmínek přerušení pomocí klíčů registru
Aplikace lze vynutit k přerušení při zprávě pomocí následujících klíčů registru.
EnableBreakOnMessage – tento klíč umožňuje přerušení zpráv (a způsobí ignorování nastavení SetBreakOnCategory()/SetBreakOnSeverity()/SetBreakOnID(). Skutečné zprávy, které se mají přerušit, jsou definovány pomocí jedné nebo více BreakOn_* hodnot definovaných níže.
- BreakOn_CATEGORY_* – Přerušit pro jakoukoli zprávu procházející filtry úložiště. * je jednou ze zpráv kategorie D3D10_MESSAGE_CATEGORY.
- BreakOn_SEVERITY_* – přerušení všech zpráv procházejících filtry úložiště * je jednou ze zpráv D3D10_MESSAGE_SEVERITY_.
- BreakOn_ID_* – přerušení na každé zprávě procházející filtry úložiště * je jednou z D3D10_MESSAGE_ID_ zpráv nebo může být číselná hodnota výčtu chyb. Předpokládejme například, že zpráva s ID "D3D10_MESSAGE_ID_HYPOTHETICAL" měla v D3D10_MESSAGE_ID výčtu hodnotu 123. V tomto případě by vytvoření hodnoty BreakOn_ID_HYPOTHETICAL=1 nebo BreakOn_ID_123=1 udělalo totéž – přerušení, když se zobrazí zpráva s ID D3D10_MESSAGE_ID_HYPOTHETICAL.
Potlačení výstupu ladění pomocí klíčů registru
Výstup ladění lze ztlumit pomocí klíče MuteDebugOutput. Přítomnost této hodnoty v registru vynutí přepsání metody InfoQueue ID3D10InfoQueue::SetMuteDebugOutput. MuteDebugOutput zastaví zprávy, které projdou filtrem úložiště, aby se neposílaly do výstupu ladění.
Zakázání zpráv vrstvy ladění
Zprávy vrstvy ladění mohou být deaktivovány jednotlivě nebo jako skupina během běhu programu zadáním filtrů pomocí ID3D10InfoQueue::AddStorageFilterEntries. Argument pFilter pro ID3D10InfoQueue::AddStorageFilterEntries přijímá strukturu D3D10_INFO_QUEUE_FILTER, která obsahuje seznam povolených položek a seznam zakázaných položek. Seznamy povolených a odepření jsou popsány D3D10_INFO_QUEUE_FILTER_DESC strukturami, které umožňují filtrování podle kategorie, závažnosti a ID jednotlivých zpráv.
Následující kód je příkladem nastavení ID3D10InfoQueue Interface k odepření D3D10_MESSAGE_ID_DEVICE_DRAW_INDEX_BUFFER_TOO_SMALL zprávy.
//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 );
Související témata
-
funkce rozhraní API (Direct3D 10)