Megosztás a következőn keresztül:


Tesztelési és hibakeresési eszközök a folyamatélettartam-kezeléshez (PLM)

Az UWP-alkalmazások és a hagyományos asztali alkalmazások közötti egyik fő különbség az, hogy az UWP-címek a Folyamat életciklus-kezelés (PLM) hatálya alá tartozó alkalmazástárolóban találhatók. Az UWP-alkalmazásokat a Runtime Broker szolgáltatás minden platformon felfüggesztheti, folytathatja vagy leállíthatja, és dedikált eszközökkel kényszerítheti ezeket az áttűnéseket az őket kezelő kód tesztelése vagy hibakeresése során.

A Visual Studio 2015 funkciói

A Visual Studio 2015 beépített hibakeresője segíthet az UWP-kizárólagos funkciók használatakor felmerülő lehetséges problémák kivizsgálásában. Az alkalmazás különböző PLM-állapotokra kényszeríthető az Életciklus Események eszköztár használatával, amely a cím futtatásakor és hibakeresésekor válik láthatóvá.

Életciklus események eszköztár

A PLMDebug eszköz

PLMDebug.exe egy parancssori eszköz, amely lehetővé teszi egy alkalmazáscsomag PLM-állapotának szabályozását, és a Windows SDK részeként lesz szállítva. A telepítés után az eszköz alapértelmezés szerint C:\Program Files (x86)\Windows Kits\10\Debuggers\x64 található.

A PLMDebug lehetővé teszi a PLM letiltását minden telepített alkalmazáscsomag esetében, amely bizonyos hibakeresők számára szükséges. A PLM letiltása megakadályozza, hogy a Runtime Broker szolgáltatás leállítja az alkalmazást, mielőtt lehetősége lenne a hibakeresésre. A PLM letiltásához használja a /enableDebug kapcsolót, majd az UWP-alkalmazás teljes csomagnevét (a csomag rövid neve, a csomagcsalád neve vagy az AUMID nem fog működni):

plmdebug /enableDebug [PackageFullName]

Miután telepítette az UWP-alkalmazást a Visual Studióból, a teljes csomagnév megjelenik a kimeneti ablakban. Másik lehetőségként a teljes csomagnevet is lekérheti, ha Get-AppxPackage futtat egy PowerShell-konzolon.

Get-AppxPackage futtatása

Megadhat egy abszolút elérési utat egy hibakeresőhöz, amely automatikusan elindul az alkalmazáscsomag aktiválásakor. Ha ezt a Visual Studióval szeretné elvégezni, meg kell adnia a VSJITDebugger.exe-t hibakereső eszközként. Azonban a VSJITDebugger.exe megköveteli, hogy megadja a "-p" kapcsolót, valamint az UWP alkalmazás folyamatazonosítóját (PID). Mivel az UWP-alkalmazás PID-jét nem lehet előre megismerni, ez a forgatókönyv alapértelmezés szerint nem lehetséges.

Ezt a korlátozást megkerülheti egy olyan szkript vagy eszköz írásával, amely azonosítja a játék folyamatát, és aztán a shell lefuttatja a VSJITDebugger.exe-t, átadva az UWP-alkalmazás PID-jét. Az alábbi C#-kódminta ennek egyszerű megközelítését mutatja be.

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();
        }
    }
}

Ennek használatára példa a PLMDebuggal együtt:

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

ahol Game a folyamat neve, 279f7062-ce35-40e8-a69f-cc22c08e0bb8_1.0.0.0_x86__c6sq6kwgxxfcg pedig a példa UWP-alkalmazáscsomag teljes csomagneve.

Vegye figyelembe, hogy az /enableDebug hívását később egy másik PLMDebug-híváshoz kell kapcsolni a /disableDebug kapcsolóval. Ezenkívül a hibakereső elérési útjának abszolútnak kell lennie (a relatív elérési utak nem támogatottak).