Delen via


UWP-apps implementeren en fouten opsporen

In dit artikel wordt u begeleid bij de stappen voor het richten van verschillende implementatie- en foutopsporingsdoelen.

Met Microsoft Visual Studio kunt u uw UWP-apps (Universal Windows Platform) implementeren en fouten opsporen op verschillende Windows 10-apparaten. Visual Studio verwerkt het proces van het bouwen en registreren van de app op het doelapparaat.

Een implementatiedoel kiezen

Als u een doel wilt kiezen, gaat u naar de vervolgkeuzelijst foutopsporingsdoel naast de knop Foutopsporing starten en kiest u op welk doel u uw app wilt implementeren. Nadat het doel is geselecteerd, selecteert u Start Debugging (F5) om dit doel te implementeren en fouten op te sporen, of selecteert u Ctrl+F5- om alleen naar dat doel te implementeren.

debug doelapparatenlijst

  • Simulator de app implementeert in een gesimuleerde omgeving op uw huidige ontwikkelcomputer. Deze optie is alleen beschikbaar als de Target Platform Min. Versie van uw app kleiner is dan of gelijk is aan het besturingssysteem op uw ontwikkelcomputer.
  • Lokale computer zet de app in op uw huidige ontwikkelcomputer. Deze optie is alleen beschikbaar als de Target Platform Min. Versie van uw app kleiner is dan of gelijk is aan het besturingssysteem op uw ontwikkelcomputer.
  • Remote Machine kunt u een extern doel opgeven om de app te implementeren. Meer informatie over implementeren op een externe computer vindt u in Een extern apparaat opgeven.
  • Device implementeert de app op een apparaat dat via USB is verbonden. Het apparaat moet ontwikkelaarsontgrendeld zijn en het scherm moet ontgrendeld zijn.
  • Een Emulator doel wordt opgestart en de app geïmplementeerd in een emulator met de configuratie die is opgegeven in de naam. Emulators zijn alleen beschikbaar op Hyper-V computers met Windows 8.1 of hoger.

Foutopsporing voor geïmplementeerde apps

Visual Studio kan ook worden gekoppeld aan elk actief UWP-app-proces door Foutopsporingte selecteren en vervolgens Aan een proces koppelen. Voor het koppelen aan een actief proces is het oorspronkelijke Visual Studio-project niet vereist, maar het laden van de symbolen van het proces helpt aanzienlijk bij het opsporen van fouten in een proces waarvoor u de oorspronkelijke code niet hebt.

Bovendien kan elk geïnstalleerd app-pakket worden gekoppeld aan en er kan foutopsporing op worden uitgevoerd door Foutopsporingte selecteren, Andereen vervolgens Foutopsporing van geïnstalleerde app-pakketten.

dialoogvenster Geïnstalleerde app-pakket debuggen

Als u Niet starten selecteert, maar fouten opsporen in mijn code wanneer deze wordt gestart zorgt ervoor dat het foutopsporingsprogramma van Visual Studio wordt gekoppeld aan uw UWP-app wanneer u deze op een aangepast tijdstip start. Dit is een effectieve manier om fouten in besturingspaden op te sporen vanuit verschillende startmethoden, zoals protocolactivering met aangepaste parameters.

UWP-apps kunnen worden ontwikkeld en gecompileerd in Windows 8.1 of hoger, maar vereisen dat Windows 10 wordt uitgevoerd. Als u een UWP-app ontwikkelt op een Pc met Windows 8.1, kunt u op afstand fouten opsporen in een UWP-app die wordt uitgevoerd op een ander Windows 10-apparaat, mits zowel de host- als de doelcomputer zich op hetzelfde LAN bevinden. Hiervoor downloadt en installeert u de Remote Tools for Visual Studio op beide computers. De geïnstalleerde versie moet overeenkomen met de bestaande versie van Visual Studio die u hebt geïnstalleerd en de architectuur die u selecteert (x86, x64) moet ook overeenkomen met die van uw doel-app.

Pakketindeling

Vanaf Visual Studio 2015 Update 3 hebben we de optie toegevoegd voor ontwikkelaars om het indelingspad voor hun UWP-apps op te geven. Hiermee bepaalt u waar de pakketindeling naar de schijf wordt gekopieerd wanneer u uw app bouwt. Deze eigenschap is standaard ingesteld ten opzichte van de hoofdmap van het project. Als u deze eigenschap niet wijzigt, blijft het gedrag hetzelfde als voor eerdere versies van Visual Studio.

Deze eigenschap kan worden aangepast in de projecteigenschappen onder Debug.

Als u alle indelingsbestanden in uw pakket wilt opnemen wanneer u een pakket voor uw app maakt, moet u de projecteigenschap toevoegen <IncludeLayoutFilesInPackage>true</IncludeLayoutFilesInPackage>.

Ga als volgt te werk om deze eigenschap toe te voegen:

  1. Klik met de rechtermuisknop op het project en selecteer Project ontladen.
  2. Klik met de rechtermuisknop op het project en selecteer Bewerken [projectnaam].xxproj (.xxproj verandert afhankelijk van de projecttaal).
  3. Voeg de eigenschap toe en laad het project opnieuw.

Een extern apparaat specificeren

C# en Microsoft Visual Basic

Als u een externe machine wilt opgeven voor C# of Microsoft Visual Basic-apps, selecteert u Remote Machine in de vervolgkeuzelijst voor foutopsporingsdoel. Het dialoogvenster Externe verbindingen wordt weergegeven, waarmee u een IP-adres kunt opgeven of een gedetecteerd apparaat kunt selecteren. Standaard is de Universele-verificatiemodus geselecteerd. Zie Verificatiemodiom te bepalen welke verificatiemodus moet worden gebruikt.

dialoogvenster Externe verbindingen

Als u wilt terugkeren naar dit dialoogvenster, kunt u de projecteigenschappen openen en naar het tabblad Foutopsporing gaan. Selecteer Find naast Externe machine:

tabblad Foutopsporing

Als u een app wilt implementeren op een externe pc van een pre-Creators Update, moet u ook de Externe hulpprogramma's van Visual Studio op de doel-pc downloaden en installeren. Zie instructies voor externe pc'svoor volledige instructies. Vanaf de Creators Update PC ondersteunt echter ook externe implementatie.

C++ en JavaScript

Een extern computerdoel opgeven voor een C++ of JavaScript UWP-app:

  1. Klik in Solution Explorermet de rechtermuisknop op het project en klik vervolgens op Eigenschappen.
  2. Ga naar Foutopsporinginstellingen en selecteer onder Debugger om te startende optie Externe machine.
  3. Voer de machinenaam in (of klik op zoeken om er een te zoeken) en stel de eigenschap verificatietype in.

eigenschappenpagina's voor foutopsporing

Nadat de machine is opgegeven, kunt u Externe Machine selecteren in de vervolgkeuzelijst voor foutopsporingsdoel om terug te keren naar die opgegeven computer. Er kan slechts één externe machine tegelijk worden geselecteerd.

Instructies voor toegang op afstand tot pc's

Opmerking

Deze instructies zijn alleen vereist voor oudere versies van Windows 10. Vanaf de Creators Update kan een pc worden gebruikt als een Xbox. Dat wil zeggen, door Apparaatdetectie in te schakelen in het menu Ontwikkelaarsmodus van de pc en Universele Verificatie te gebruiken om te koppelen met een pincode en verbinding te maken met de pc.

Als u wilt implementeren op een externe pc van een pre-Creators Update, moet op de doel-pc de Externe hulpprogramma's van Visual Studio zijn geïnstalleerd. Op de externe pc moet ook een versie van Windows draaien die groter is dan of gelijk is aan de minimale versie-instelling van uw app's doelplatform. Nadat u de externe hulpprogramma's hebt geïnstalleerd, moet u het externe foutopsporingsprogramma op de doel-pc starten.

Als u dit wilt doen, zoekt u Remote Debugger in het menu Start, opent u dit en staat u het foutopsporingsprogramma toe om uw firewallinstellingen te configureren. Standaard wordt het foutopsporingsprogramma gestart met Windows-verificatie. Hiervoor zijn gebruikersreferenties vereist als de aangemelde gebruiker niet hetzelfde is op beide pc's.

Als u deze wilt wijzigen in geen verificatie, gaat u in het remote debuggernaar Tools ->Optionsen stelt u deze in op Geen verificatie. Nadat het externe foutopsporingsprogramma is ingesteld, moet u er ook voor zorgen dat u het hostapparaat hebt ingesteld op ontwikkelaarsmodus. Daarna kunt u implementeren vanaf uw ontwikkelcomputer.

Zie de pagina Visual Studio Download center voor meer informatie.

Foutopsporingsargumenten doorgeven aan de opdrachtregel

In Visual Studio 2019 kunt u opdrachtregelargumenten doorgeven wanneer u UWP-toepassingen debugt. U hebt toegang tot de opdrachtregelargumenten voor foutopsporing vanuit de parameter args in de methode OnLaunched van de klasse Application. Als u argumenten voor foutopsporing van opdrachtregels wilt opgeven, opent u de eigenschappen van het project en gaat u naar het tabblad Foutopsporing.

Opmerking

Dit is beschikbaar in Visual Studio 2017 (versie 15.1) voor C#, VB en C++. JavaScript is beschikbaar in latere versies. Argumenten voor foutopsporing voor opdrachtregels zijn beschikbaar voor alle implementatietypen, met uitzondering van de simulator.

Voor C# en VB UWP-projecten ziet u een veld voor opdrachtregelargumenten: onder Startopties.

opdrachtregelargumenten

Voor C++ en JS UWP-projecten ziet u opdrachtregelargumenten als veld in de Eigenschappen voor foutopsporing.

Schermopname van de eigenschappenpagina’s van de app 4 met configuratie-eigenschappen > waarin de optie 'Foutopsporing' is geselecteerd en de eigenschap 'Opdrachtregelargumenten' in de tabel is opgenomen.

Nadat u de opdrachtregelargumenten hebt opgegeven, hebt u toegang tot de waarde van het argument in de OnLaunched methode van de app. Het LaunchActivatedEventArgs object args heeft een eigenschap Argumenten met een waarde die is ingesteld op de tekst in het veld opdrachtregelargumenten.

Schermopname van opdrachtregelargumenten voor C++ en JS.

Verificatiemodi

Er zijn drie authenticatiemodi voor de implementatie van externe machines.

  • Universal (Unencrypted Protocol): gebruik deze verificatiemodus wanneer u op een extern apparaat implementeert. Dit is momenteel voor IoT-apparaten, Xbox-apparaten en HoloLens-apparaten, evenals pc's met Windows-versie 1703 (Makersupdate) of hoger. Universal (Unencrypted Protocol) mag alleen worden gebruikt op vertrouwde netwerken. De foutopsporingsverbinding is kwetsbaar voor kwaadwillende gebruikers die gegevens kunnen onderscheppen en wijzigen die worden doorgegeven tussen de ontwikkel- en externe computer.
  • Windows: deze verificatiemodus is alleen bedoeld om te worden gebruikt voor een externe pc (desktop of laptop) waarop visual Studio Remote Tools wordt uitgevoerd. Gebruik deze verificatiemodus wanneer u toegang hebt tot de referenties van de aangemelde gebruiker van de doelcomputer. Dit is het veiligste kanaal voor externe implementatie.
  • Geen: deze verificatiemodus is alleen bedoeld om te worden gebruikt voor een externe pc (desktop of laptop) waarop visual Studio Remote Tools wordt uitgevoerd. Gebruik deze verificatiemodus wanneer u een testcomputer hebt ingesteld in een omgeving met een testaccount dat is aangemeld en u de referenties niet kunt invoeren. Zorg ervoor dat de instellingen voor het externe foutopsporingsprogramma zijn ingesteld om geen verificatie te accepteren.

Geavanceerde externe implementatieopties

Vanaf de release van Visual Studio 2015 Update 3 en de Windows 10 Jubileumupdate zijn er nieuwe geavanceerde externe implementatieopties voor bepaalde Windows 10-apparaten. De geavanceerde opties voor externe implementatie vindt u in het menu Foutopsporing menu voor projecteigenschappen.

De nieuwe eigenschappen zijn onder andere:

  • Implementatietype
  • Pad voor pakketregistratie
  • Alle bestanden op het apparaat behouden, zelfs bestanden die geen deel meer uitmaken van uw indeling

Behoeften

Als u gebruik wilt maken van de geavanceerde opties voor externe implementatie, moet u voldoen aan de volgende vereisten:

  • Visual Studio 2015 Update 3 of een latere Versie van Visual Studio moet zijn geïnstalleerd met Windows 10 Tools 1.4.1 of hoger (waaronder de Windows 10 Jubileumupdate-SDK) We raden u aan de nieuwste versie van Visual Studio te gebruiken met updates om ervoor te zorgen dat u alle nieuwste ontwikkel- en beveiligingsfuncties krijgt.
  • Richt je op een Windows 10 Anniversary Update Xbox op afstand bestuurbaar apparaat of een Windows 10 Creators Update PC.
  • Universele verificatiemodus gebruiken

Eigenschapspagina's

Voor een C# of Visual Basic UWP-app ziet de eigenschappenpagina er als volgt uit.

CS- of VB-eigenschappen

Voor een C++ UWP-app ziet de eigenschappenpagina er als volgt uit.

Cpp-eigenschappen

Bestanden naar apparaat kopiëren

bestanden naar het apparaat kopiëren worden de bestanden fysiek via het netwerk overgedragen naar het externe apparaat. Hiermee wordt de pakketindeling die is gebouwd, gekopieerd en geregistreerd naar het pad van de indelingsmap Layout. Visual Studio houdt de bestanden die naar het apparaat zijn gekopieerd, gesynchroniseerd met de bestanden in uw Visual Studio-project; Er is echter een optie om alle bestanden op het apparaat te behouden, zelfs bestanden die niet langer deel uitmaken van uw indeling. Als u deze optie selecteert, blijven alle bestanden die eerder naar het externe apparaat zijn gekopieerd, maar die geen deel meer uitmaken van uw project, op het externe apparaat.

Het pakketregistratiepad dat wordt opgegeven wanneer u bestanden naar het apparaat kopieert, is de fysieke locatie op het externe apparaat waar de bestanden worden gekopieerd. Dit pad kan worden opgegeven als elk relatief pad. De locatie waar de bestanden worden geïmplementeerd, is relatief ten opzichte van de hoofdmap van ontwikkelingsbestanden, die afhankelijk is van het doelapparaat. Het opgeven van dit pad is handig voor meerdere ontwikkelaars die hetzelfde apparaat delen en werken aan pakketten met enige variantie van de build.

Opmerking

Bestanden kopiëren naar een apparaat wordt momenteel ondersteund op Xbox waarop Windows 10 Jubileumupdate en pc's met Windows 10 Creators Update worden uitgevoerd.

Op het externe apparaat wordt de indeling gekopieerd naar de volgende standaardlocatie: \\MY-DEVKIT\DevelopmentFiles\PACKAGE-REGISTRATION-PATH

Indeling registreren vanuit het netwerk

Wanneer u ervoor kiest om de indeling van het netwerk te registreren, kunt u de pakketindeling bouwen op een netwerkshare en vervolgens de indeling op het externe apparaat rechtstreeks vanuit het netwerk registreren. Hiervoor moet u een pad naar de indelingsmap (een netwerkshare) opgeven die kan worden benaderd door het externe apparaat. Het pad indelingsmap eigenschap is het pad dat is ingesteld ten opzichte van de pc waarop Visual Studio wordt uitgevoerd, terwijl het pakketregistratiepad eigenschap hetzelfde pad is, maar is opgegeven ten opzichte van het externe apparaat.

Als u de indeling van het netwerk wilt registreren, moet u eerst pad naar de indelingsmap maken een gedeelde netwerkmap. Klik hiervoor met de rechtermuisknop op de map in Verkenner, selecteer Delen met > Specifieke personenen kies vervolgens de gebruikers waarmee u de map wilt delen. Wanneer u probeert de indeling vanaf het netwerk te registreren, wordt u gevraagd om inloggegevens zodat kan worden gegarandeerd dat u zich registreert als gebruiker die toegang heeft tot de gedeelde locatie.

Zie de volgende voorbeelden voor hulp:

  • Voorbeeld 1 (lokale indelingsmap, toegankelijk als een netwerkshare):

    • Pad van lay-outmap = D:\Layouts\App1
    • pakketregistratiepad = \\NETWORK-SHARE\Layouts\App1
  • Voorbeeld 2 (map met netwerkindeling):

    • Pad van lay-outmap = \\NETWORK-SHARE\Layouts\App1
    • pakketregistratiepad = \\NETWORK-SHARE\Layouts\App1

Wanneer u de indeling voor het eerst registreert vanuit het netwerk, worden uw referenties in de cache opgeslagen op het doelapparaat, zodat u zich niet herhaaldelijk hoeft aan te melden. Als u referenties in de cache wilt verwijderen, kunt u het hulpprogramma WinAppDeployCmd.exe uit de Windows 10 SDK gebruiken met de opdracht deletecreds.

U kunt niet alle bestanden op het apparaat bewaren wanneer u de indeling van het netwerk registreert, omdat er geen bestanden fysiek naar het externe apparaat worden gekopieerd.

Opmerking

Registerindeling vanaf netwerk wordt momenteel ondersteund op een Xbox met Windows 10 Jubileumupdate en pc's met Windows 10 Creators Update.

Op het externe apparaat wordt de indeling geregistreerd op de volgende standaardlocatie, afhankelijk van de apparaatfamilie: Xbox: \\MY-DEVKIT\DevelopmentFiles\XrfsFiles - dit is een symlink naar het pakketregistratiepad pc gebruikt geen symlink en registreert in plaats daarvan het pakketregistratiepad

Opties voor foutopsporing

In Windows 10 worden de opstartprestaties van UWP-apps verbeterd door apps proactief te starten en ze vervolgens op te schorten in een techniek die pre-launchwordt genoemd. Veel apps hoeven niets speciaals te doen om in deze modus te werken, maar sommige apps moeten hun gedrag mogelijk aanpassen. Als u problemen in deze codepaden wilt opsporen, kunt u beginnen met het opsporen van fouten in de app vanuit Visual Studio in de modus Prelaunch.

Foutopsporing wordt ondersteund vanuit een Visual Studio-project (Foutopsporing ->Andere foutopsporingsdoelen ->Debug Universal Windows App Prelaunch) en voor apps die al op de machine zijn geïnstalleerd (Foutopsporing ->Andere foutopsporingsdoelen ->Gedebugde App-pakket door het selectievakje App activeren met Prelaunch in te schakelen). Zie Debug UWP Prelaunchvoor meer informatie.

U kunt de volgende implementatieopties instellen op de eigenschappenpagina Foutopsporing van het opstartproject:

  • lokale netwerk-loopback toestaan

    Om veiligheidsredenen is een UWP-app die op de standaard manier is geïnstalleerd, niet toegestaan om netwerkoproepen naar het apparaat te plaatsen waarop deze is geïnstalleerd. Visual Studio-implementatie maakt standaard een uitzondering van deze regel voor de geïmplementeerde app. Met deze uitzondering kunt u communicatieprocedures op één computer testen. Voordat u uw app indient bij de Microsoft Store, moet u uw app testen zonder de uitzondering.

    De uitzondering voor netwerk-loopback verwijderen uit de app:

    • Maak op de eigenschappenpagina C# en Visual Basic Foutopsporing het selectievakje Toestaan van lokale netwerklusback leeg.
    • Stel op de eigenschappenpagina javaScript en C++ Foutopsporing de waarde Lokale netwerklusback toestaan in op Geen.
  • Niet starten, maar mijn code debuggen bij het opstarten/starten van de toepassing

    De implementatie configureren om automatisch een foutopsporingssessie te starten wanneer de app wordt gestart:

    • Op de eigenschappenpagina voor C# en Visual Basic Debug, selecteer het selectievakje Niet starten, maar mijn code debuggen wanneer deze wordt gestart.
    • Stel op de eigenschappenpagina JavaScript en C++ Foutopsporing de waarde van Toepassing opstarten in op Ja.

Symbolen

Symboolbestanden bevatten een verscheidenheid aan zeer nuttige gegevens bij het opsporen van fouten in code, zoals variabelen, functienamen en toegangspuntadressen, zodat u beter inzicht krijgt in uitzonderingen en callstack-uitvoeringsvolgorde. Symbolen voor de meeste varianten van Windows zijn beschikbaar via de Microsoft Symbol Server of kunnen worden gedownload voor snellere, offline lookups op Download Windows Symbol Packages.

Als u symboolopties voor Visual Studio wilt instellen, selecteert u Extra > Optiesen gaat u vervolgens naar Debuggen > Symbolen in het dialoogvenster.

Opties dialoogvenster

Als u symbolen wilt laden in een foutopsporingssessie met WinDbg-, stelt u de variabele sympathie in op de locatie van het symboolpakket. Als u bijvoorbeeld de volgende opdracht uitvoert, worden symbolen uit de Microsoft Symbol Server geladen en worden deze in de map C:\Symbols opgeslagen in de cache:

.sympath SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols
.reload

U kunt meer paden toevoegen met behulp van het ‘;’ scheidingsteken of de opdracht .sympath+. Zie openbare en persoonlijke symbolenvoor meer geavanceerde symboolbewerkingen die gebruikmaken van WinDbg.

WinDbg

WinDbg is een krachtig foutopsporingsprogramma dat wordt geleverd als onderdeel van de Hulpprogramma's voor foutopsporing voor Windows, die is opgenomen in de Windows SDK. Met de Windows SDK-installatie kunt u Hulpprogramma's voor foutopsporing voor Windows installeren als zelfstandig product. Hoewel het zeer nuttig is voor het opsporen van fouten in systeemeigen code, raden we WinDbg niet aan voor apps die zijn geschreven in beheerde code of HTML5.

Als u WinDbg met UWP-apps wilt gebruiken, moet u eerst Process Lifetime Management (PLM) uitschakelen voor uw app-pakket met behulp van PLMDebug, zoals beschreven in Hulpprogramma's voor testen en foutopsporing voor proceslevensbeheer (PLM).

plmdebug /enableDebug [PackageFullName] ""C:\Program Files\Debugging Tools for Windows (x64)\WinDbg.exe\" -server npipe:pipe=test"

In tegenstelling tot Visual Studio is de meeste kernfunctionaliteit van WinDbg afhankelijk van het leveren van opdrachten aan het opdrachtvenster. Met de opgegeven opdrachten kunt u de uitvoeringsstatus bekijken, crashdumps voor gebruikersmodus onderzoeken en fouten opsporen in verschillende modi.

Een van de populairste opdrachten in WinDbg is !analyze -v, die wordt gebruikt om een uitgebreide hoeveelheid informatie over de huidige uitzondering op te halen, waaronder:

  • FAULTING_IP: instructie-pointer op het moment van de fout
  • EXCEPTION_RECORD: adres, code en vlaggen van de huidige uitzondering
  • STACK_TEXT: stack trace voorafgaand aan een uitzondering

Zie Opdrachten voor foutopsporingsprogramma'svoor een volledige lijst met alle WinDbg-opdrachten.