Delen via


Hulpprogramma's voor testen en foutopsporing voor Process Lifetime Management (PLM)

Een van de belangrijkste verschillen tussen UWP-apps en traditionele bureaubladtoepassingen is dat UWP-titels zich bevinden in een app-container die onderhevig is aan Process Lifecycle Management (PLM). UWP-apps kunnen worden onderbroken, hervat of beëindigd op alle platforms door de Runtime Broker-service en er zijn speciale hulpprogramma's die u kunt gebruiken om deze overgangen af te dwingen wanneer u de code test of foutopsporing uitvoert die deze verwerkt.

Functies in Visual Studio 2015

Het ingebouwde foutopsporingsprogramma in Visual Studio 2015 kan u helpen bij het onderzoeken van mogelijke problemen bij het gebruik van uwP-exclusieve functies. U kunt uw toepassing in verschillende PLM-statussen forceren met behulp van de Lifecycle Events werkbalk, die zichtbaar wordt wanneer u uw titel uitvoert en fouten opspoort.

werkbalk Levenscyclus-gebeurtenissen

Het hulpprogramma PLMDebug

PLMDebug.exe is een opdrachtregelprogramma waarmee u de PLM-status van een toepassingspakket kunt beheren en wordt verzonden als onderdeel van de Windows SDK. Nadat het is geïnstalleerd, bevindt het hulpprogramma zich standaard in C:\Program Files (x86)\Windows Kits\10\Debuggers\x64 .

MET PLMDebug kunt u PLM ook uitschakelen voor elk geïnstalleerd app-pakket, wat nodig is voor sommige foutopsporingsprogramma's. Als u PLM uitschakelt, voorkomt u dat de Runtime Broker-service uw app beëindigt voordat u fouten kunt opsporen. Als u PLM wilt uitschakelen, gebruikt u de schakeloptie /enableDebug , gevolgd door de volledige pakketnaam van uw UWP-app (de korte naam, de familienaam van het pakket of AUMID van een pakket werkt niet):

plmdebug /enableDebug [PackageFullName]

Nadat u uw UWP-app vanuit Visual Studio hebt geïmplementeerd, wordt de volledige pakketnaam weergegeven in het uitvoervenster. U kunt ook de volledige pakketnaam ophalen door Get-AppxPackage uit te voeren in een PowerShell-console.

Uitvoeren van Get-AppxPackage

U kunt desgewenst een absoluut pad naar een foutopsporingsprogramma opgeven dat automatisch wordt gestart wanneer uw app-pakket wordt geactiveerd. Als u dit wilt doen met Visual Studio, moet u VSJITDebugger.exe opgeven als foutopsporingsprogramma. Voor VSJITDebugger.exe moet u echter de schakeloptie '-p' opgeven, samen met de proces-id (PID) van de UWP-app. Omdat het niet mogelijk is om vooraf de PID van uw UWP-app te kennen, is dit scenario niet mogelijk.

U kunt deze beperking omzeilen door een script of hulpprogramma te schrijven waarmee het proces van uw game wordt geïdentificeerd. Vervolgens wordt de shell uitgevoerd VSJITDebugger.exe, waarbij de PID van uw UWP-app wordt doorgegeven. Het volgende C#-codevoorbeeld illustreert een eenvoudige benadering om dit te bereiken.

using System.Diagnostics;

namespace VSJITLauncher
{
    class Program
    {
        static void Main(string[] args)
        {
            // Name of UWP process, which can be retrieved via Task Manager.
            Process[] processes = Process.GetProcessesByName(args[0]);

            // Get PID of most recent instance
            // Note the highest PID is arbitrary. Windows may recycle or wrap the PID at any time.
            int highestId = 0;
            foreach (Process detectedProcess in processes)
            {
                if (detectedProcess.Id > highestId)
                    highestId = detectedProcess.Id;
            }

            // Launch VSJITDebugger.exe, which resides in C:\Windows\System32
            ProcessStartInfo startInfo = new ProcessStartInfo("vsjitdebugger.exe", "-p " + highestId);
            startInfo.UseShellExecute = true;

            Process process = new Process();
            process.StartInfo = startInfo;
            process.Start();
        }
    }
}

Voorbeeld van dit gebruik in combinatie met PLMDebug:

plmdebug /enableDebug 279f7062-ce35-40e8-a69f-cc22c08e0bb8_1.0.0.0_x86__c6sq6kwgxxfcg "\"C:\VSJITLauncher.exe\" Game"

waar Game is de procesnaam en 279f7062-ce35-40e8-a69f-cc22c08e0bb8_1.0.0.0_x86__c6sq6kwgxxfcg is de volledige pakketnaam van het voorbeeld-UWP-app-pakket.

Houd er rekening mee dat elke aanroep naar /enableDebug later moet worden gekoppeld aan een andere PLMDebug-aanroep met de schakeloptie /disableDebug . Bovendien moet het pad naar een foutopsporingsprogramma absoluut zijn (relatieve paden worden niet ondersteund).