Sdílet prostřednictvím


Ladění výstupních funkcí

[Funkce přidružená k této stránce DirectShow je starší funkce. Byla nahrazena MediaPlayer, MMFMediaEnginea Audio/Video Capture v Media Foundation. Tyto funkce jsou optimalizované pro Windows 10 a Windows 11. Microsoft důrazně doporučuje, aby nový kód používal MediaPlayer, MMFMediaEngine a Audio/Video Capture v Media Foundation místo DirectShow, pokud je to možné. Microsoft navrhuje, aby se stávající kód, který používá starší rozhraní API, přepsal, aby se nová rozhraní API používala, pokud je to možné.]

Základní třídy DirectShow poskytují několik maker pro zobrazení informací o ladění.

Funkce Popis
DbgCheckModuleLevel Zkontroluje, jestli je pro dané typy zpráv a úroveň povolené protokolování.
DbgDumpObjectRegister Zobrazí informace o aktivních objektech.
DbgInitialise Inicializuje knihovnu ladění.
DbgLog Odešle řetězec do výstupního umístění ladění, pokud je protokolování povolené pro zadaný typ a úroveň.
DbgOutString Odešle řetězec do výstupního umístění ladění.
DbgSetModuleLevel Nastaví úroveň protokolování pro jeden nebo více typů zpráv.
DbgTerminate Vyčistí knihovnu ladění.
DisplayType Odešle informace o typu média do výstupního umístění ladění.
DumpGraph Odešle informace o grafu filtru do výstupního umístění ladění.
GuidNames Globální pole, které obsahuje řetězce představující identifikátory GUID definované v Uuids.h.
NAME Vygeneruje řetězec jen pro ladění.
NOTE Odešle řetězec do výstupního umístění ladění.
připomenout Vygeneruje připomenutí v době kompilace.

 

klíče registru

Výstupní funkce ladění v DirectShow používá sadu klíčů registru. Umístění těchto klíčů registru závisí na verzi Systému Windows.

Předsystému Windows Vista jsou ladicí klíče umístěny pod následující cestou:

HKEY_LOCAL_MACHINE\SOFTWARE\Ladění

V systému Windows Vista nebo novější jsou umístěny pod následující cestou:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DirectShow\Debug

U filtrů třetích stran závisí umístění na verzi DirectShow Base Classes byla použita k sestavení filtru. Verze zahrnutá v sadě Windows SDK pro Windows Vista používá novější cestu. Předchozí verze používaly starší cestu.

V poznámkách, které následují, se popisek <DebugRoot> používá k označení těchto dvou cest. V závislosti na verzi systému Windows nebo verze základních tříd nahraďte správnou cestu.

protokolování ladění

DirectShow definuje několik typů zpráv, které jsou uvedené v následující tabulce.

Hodnota Popis
LOG_ERROR Oznámení o chybě
LOG_LOCKING Uzamykání a odemčení důležitých oddílů
LOG_MEMORY Přidělení paměti a vytváření a zničení objektů.
LOG_TIMING Měření časování a výkonu
LOG_TRACE Obecné trasování volání
CUSTOM1 prostřednictvím CUSTOM5 K dispozici pro vlastní ladicí zprávy

 

Každá funkce protokolování ladění DirectShow určuje typ zprávy a úroveň protokolu. Ladicí zpráva se zobrazí pouze v případě, že aktuální úroveň ladění pro daný typ zprávy je rovna nebo větší než úroveň zadaná ve funkci protokolování. Jinak se zpráva ignoruje.

Například následující kód vypíše řetězec "Toto je ladicí zpráva", pokud LOG_TRACE úroveň je 3 nebo vyšší:

DbgLog((LOG_TRACE, 3, TEXT("This is a debug message")));

Každý modul může pro každý typ zprávy nastavit vlastní úroveň ladění. (Modul je knihovna DLL nebo spustitelný soubor, který lze načíst pomocí funkce LoadLibrary.) Úrovně ladění modulu se zobrazí v registru pod následujícím klíčem:

HKEY_LOCAL_MACHINE\<DebugRoot>\<ModuleName>\<MessageType>

where <Message Type> is the message type minus the initial "LOG_"; Například uzamčení pro LOG_LOCKING zprávy. Při načtení modulu najde knihovna ladění úrovně protokolování modulu v registru. Pokud klíče registru neexistují, knihovna ladění je vytvoří.

Modul může také nastavit vlastní úrovně za běhu pomocí funkce DbgSetModuleLevel. Pokud chcete odeslat zprávu do výstupu ladění, zavolejte makro DbgLog. Následující příklad vytvoří zprávu typu 3 typu LOG_TRACE:

Můžete také zadat globální úrovně protokolování s následujícím klíčem registru:

\HKEY_LOCAL_MACHINE\<DebugRoot>\GLOBAL\<Message Type>

Ladicí knihovna používá úroveň vyšší, globální úroveň nebo úroveň modulu.

umístění výstupu ladění

Umístění výstupu ladění je určeno jiným klíčem registru:

HKEY_LOCAL_MACHINE\<>\<Modil name>\LogToFile

Pokud je hodnota tohoto klíče Console, výstup přejde do okna konzoly. Pokud je hodnota Deb, Debug, Debuggernebo prázdný řetězec, výstup přejde do okna ladicího programu. V opačném případě se výstup zapíše do souboru určeného klíčem registru.

Než spustitelný soubor použije knihovnu ladění DirectShow, musí volat funkci DbgInitialise. Potom musí volat funkci DbgTerminate. Knihovny DLL nemusí tyto funkce volat, protože vstupní bod knihovny DLL (definovaný v knihovně základních tříd) je volá automaticky.

Debugging Utilities