Dela via


Felsöka utdatafunktioner

[Funktionen som är associerad med den här sidan, DirectShow, är en äldre funktion. Det har ersatts av MediaPlayer, IMFMediaEngineoch Audio / Video Capture i Media Foundation. Dessa funktioner har optimerats för Windows 10 och Windows 11. Microsoft rekommenderar starkt att ny kod använder MediaPlayer, IMFMediaEngine och Audio/Video Capture i Media Foundation i stället för DirectShow, när det är möjligt. Microsoft föreslår att befintlig kod som använder äldre API:er skrivs om för att använda de nya API:erna om möjligt.]

DirectShow-basklasser tillhandahålla flera makron för att visa felsökningsinformation.

Funktion Beskrivning
DbgCheckModuleLevel Kontrollerar om loggning är aktiverat för de angivna meddelandetyperna och nivån.
DbgDumpObjectRegister Visar information om aktiva objekt.
DbgInitialise Initierar felsökningsbiblioteket.
DbgLog Skickar en sträng till platsen för felsökningsutdata, om loggning är aktiverad för den angivna typen och nivån.
DbgOutString Skickar en sträng till platsen för felsökningsutdata.
DbgSetModuleLevel Anger loggningsnivån för en eller flera meddelandetyper.
DbgTerminate Rensar felsökningsbiblioteket.
DisplayType Skickar information om en medietyp till platsen för felsökningsutdata.
DumpGraph Skickar information om ett filterdiagram till platsen för felsökningsutdata.
GuidNames Global matris som innehåller strängar som representerar GUID:erna som definierats i Uuids.h.
NAMN Genererar en sträng med endast felsökning.
NOTE Skickar en sträng till platsen för felsökningsutdata.
PÅMINN Genererar en påminnelse vid kompileringstillfället.

 

registernycklar

Funktionen felsöka utdata i DirectShow använder en uppsättning registernycklar. Platsen för dessa registernycklar beror på versionen av Windows.

Före Windows Vistafinns felsökningsnycklarna under följande sökväg:

HKEY_LOCAL_MACHINE\SOFTWARE\Debug

I Windows Vista eller senare finns de under följande sökväg:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DirectShow\Debug

För filter från tredje part beror platsen på vilken version av DirectShow Base-klasser användes för att skapa filtret. Den version som ingår i Windows SDK för Windows Vista använder den nyare sökvägen. Tidigare versioner använde den äldre sökvägen.

I kommentarerna nedan används etiketten <DebugRoot> för att ange dessa två sökvägar. Ersätt rätt sökväg, beroende på vilken version av Windows eller vilken version av basklasserna som finns.

Felsökningsloggning

DirectShow definierar flera meddelandetyper som visas i följande tabell.

Värde Beskrivning
LOG_ERROR Felmeddelande.
LOG_LOCKING Låsning och upplåsning av kritiska avsnitt.
LOG_MEMORY Minnesallokering och skapande och förstörelse av objekt.
LOG_TIMING Tids- och prestandamätningar.
LOG_TRACE Allmän anropsspårning.
CUSTOM1 genom CUSTOM5 Tillgänglig för anpassade felsökningsmeddelanden

 

Var och en av directshow-funktionerna för felsökningsloggning anger en meddelandetyp och en loggnivå. Felsökningsmeddelandet visas endast när den aktuella felsökningsnivån för den meddelandetypen är lika med eller större än den nivå som anges i loggningsfunktionen. Annars ignoreras meddelandet.

Följande kod matar till exempel ut strängen "Det här är ett felsökningsmeddelande" om LOG_TRACE-nivån är 3 eller högre:

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

Varje modul kan ange en egen felsökningsnivå för varje meddelandetyp. (En modul är en DLL eller körbar fil som kan läsas in med funktionen LoadLibrary.) En moduls felsökningsnivåer visas i registret under följande nyckel:

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

där <meddelandetyp> är meddelandetypen minus den inledande "LOG_"; till exempel LÅSNING för LOG_LOCKING meddelanden. När en modul läses in hittar felsökningsbiblioteket modulens loggningsnivåer i registret. Om registernycklarna inte finns skapar felsökningsbiblioteket dem.

En modul kan också ange sina egna nivåer vid körning med hjälp av funktionen DbgSetModuleLevel. Om du vill skicka ett meddelande till felsökningsutdata anropar du makrot DbgLog. I följande exempel skapas ett meddelande på nivå 3 av typen LOG_TRACE:

Du kan också ange globala loggningsnivåer med följande registernyckel:

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

Felsökningsbiblioteket använder den nivå som är större, den globala nivån eller modulnivån.

Felsöka utdataplats

Platsen för felsökningsutdata bestäms av en annan registernyckel:

HKEY_LOCAL_MACHINE\<DebugRoot>\<Modile Name>\LogToFile

Om värdet för den här nyckeln är Consolegår utdata till konsolfönstret. Om värdet är Deb, Debug, Debuggereller en tom sträng går utdata till felsökningsfönstret. Annars skrivs utdata till en fil som anges av registernyckeln.

Innan en körbar fil använder DirectShow-felsökningsbiblioteket måste den anropa funktionen DbgInitialise. Efteråt måste den anropa funktionen DbgTerminate. DLL:er behöver inte anropa dessa funktioner eftersom DLL-startpunkten (definieras i basklassbiblioteket) anropar dem automatiskt.

Felsökning av verktyg