Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Om du hittar problem i Microsoft C++-kompilatorn (MSVC), länkaren eller andra verktyg och bibliotek vill vi veta mer om dem. När problemet finns i vår dokumentation vill vi också veta om det.
Rapportera ett problem med C++-verktygsuppsättningen
Det bästa sättet att informera oss om ett problem är att skicka oss en rapport som innehåller en beskrivning av problemet du upptäckte. Den bör ha all information om hur du skapar ditt program. Och den bör innehålla en repro, ett fullständigt testfall som vi kan använda för att återskapa problemet på våra egna datorer. Med den här informationen kan vi snabbt kontrollera att problemet finns i koden och inte är lokalt för din miljö. Det hjälper oss att avgöra om det påverkar andra versioner av kompilatorn och att diagnostisera orsaken.
I följande avsnitt läser du om vad som gör en bra rapport. Vi beskriver hur du genererar en repro för den typ av problem som du hittade och hur du skickar rapporten till produktteamet. Dina rapporter är viktiga för oss och för andra utvecklare som du. Tack för att du hjälper oss att förbättra Microsoft C++!
Så här förbereder du rapporten
Det är viktigt att skapa en rapport av hög kvalitet eftersom det är svårt för oss att återskapa problemet som du hittade utan fullständig information. Ju bättre rapporten är, desto effektivare kan vi återskapa och diagnostisera problemet.
Rapporten bör minst innehålla:
- Den fullständiga versionsinformationen för den verktygsuppsättning som du använder. 
- Den fullständiga cl.exe-kommandoraden som används för att bygga din kod. 
- En detaljerad beskrivning av problemet som du hittade. 
- En repro: ett komplett, förenklat, fristående källkodsexempel som visar problemet. 
Läs vidare om du vill veta mer om den specifika information vi behöver och var du hittar den och hur du skapar en bra repro.
Verktygsuppsättningsversionen
Vi behöver fullständig versionsinformation och målarkitekturen för den verktygsuppsättning som orsakar problemet. Därför kan vi testa din repro mot samma verktygsuppsättning på våra datorer. Om vi kan återskapa problemet ger den här informationen oss också en startpunkt för att undersöka vilka andra versioner av verktygsuppsättningen som har samma problem.
Så här rapporterar du den fullständiga versionen av kompilatorn
- Öppna kommandotolken För utvecklare som matchar Visual Studio-versionen och konfigurationsarkitekturen som används för att skapa projektet. Om du till exempel skapar med Visual Studio 2017 på x64 för x64-mål väljer du kommandotolken x64 Native Tools för VS 2017. Mer information finns i Developer command prompt shortcuts (Snabbkommandon för utvecklare). 
- I konsolfönstret för kommandotolken för utvecklare anger du kommandot cl /Bv. 
Utdata bör se ut ungefär så här:
C:\Users\username\Source>cl /Bv
Microsoft (R) C/C++ Optimizing Compiler Version 19.14.26428.1 for x86
Copyright (C) Microsoft Corporation.  All rights reserved.
Compiler Passes:
 C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.14.26428\bin\HostX86\x86\cl.exe:        Version 19.14.26428.1
 C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.14.26428\bin\HostX86\x86\c1.dll:        Version 19.14.26428.1
 C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.14.26428\bin\HostX86\x86\c1xx.dll:      Version 19.14.26428.1
 C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.14.26428\bin\HostX86\x86\c2.dll:        Version 19.14.26428.1
 C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.14.26428\bin\HostX86\x86\link.exe:      Version 14.14.26428.1
 C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.14.26428\bin\HostX86\x86\mspdb140.dll:  Version 14.14.26428.1
 C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.14.26428\bin\HostX86\x86\1033\clui.dll: Version 19.14.26428.1
cl : Command line error D8003 : missing source filename
Kopiera och klistra in hela utdata i rapporten.
Kommandorad
Vi behöver den exakta kommandoraden, cl.exe och alla dess argument, som används för att skapa din kod. Det är så att vi kan bygga det på exakt samma sätt på våra datorer. Det är viktigt eftersom problemet du hittade kanske bara finns när du skapar med ett visst argument eller en kombination av argument.
Det bästa stället att hitta den här informationen finns i byggloggen direkt efter att du har fått problemet. Det säkerställer att kommandoraden innehåller exakt samma argument som kan bidra till problemet.
Så här rapporterar du innehållet på kommandoraden
- Leta upp filen CL.command.1.tlog och öppna den. Som standard finns den här filen i mappen Dokument i \Visual Studio version\Projects\SolutionName\ProjectName\Configuration\ProjectName.tlog\CL.command.1.tlog, eller i mappen User under \Source\Repos\SolutionName\ProjectName\Configuration\ProjectName.tlog\CL.command.1.tlog. Det kan finnas på en annan plats om du använder ett annat byggsystem eller om du har ändrat standardplatsen för projektet. - I den här filen hittar du namnen på dina källkodsfiler, följt av de kommandoradsargument som används för att kompilera dem, var och en på separata rader. 
- Leta upp raden som innehåller namnet på den källkodsfil där problemet uppstår. Raden under den innehåller motsvarande kommandoargument för cl.exe. 
Kopiera och klistra in hela kommandoraden i rapporten.
En beskrivning av problemet
Vi behöver en detaljerad beskrivning av problemet du hittade. Därför kan vi kontrollera att vi ser samma effekt på våra datorer. Det är också ibland användbart för oss att veta vad du försökte åstadkomma och vad du förväntade dig att hända.
En bra beskrivning innehåller de exakta felmeddelanden som ges av verktygsuppsättningen eller det exakta körningsbeteende som du ser. Vi behöver den här informationen för att kontrollera att problemet har återskapats korrekt. Inkludera alla kompilatorutdata, inte bara det sista felmeddelandet. Vi behöver se allt som ledde fram till problemet du rapporterar. Om du kan duplicera problemet med hjälp av kommandoradskompilatorn är kompilatorns utdata att föredra. IDE och andra byggsystem kan filtrera de felmeddelanden du ser, eller bara avbilda den första raden i ett felmeddelande.
Om problemet är att kompilatorn accepterar ogiltig kod och inte genererar någon diagnostik ska du inkludera den i rapporten.
Om du vill rapportera ett problem med körningsbeteende ska du inkludera en exakt kopia av vad programmet skriver ut och vad du förväntar dig att se. Vi rekommenderar att du bäddar in den i själva utdatautdraget, printf("This should be 5: %d\n", actual_result);till exempel . Om programmet kraschar eller låser sig nämner du det också.
Lägg till annan information som kan hjälpa oss att diagnostisera det problem du hittade, till exempel eventuella work-arounds som du har identifierat. Försök att inte upprepa information som finns någon annanstans i rapporten.
Repro
En repro är ett komplett, fristående källkodsexempel. Den demonstrerar på nytt problemet du hittade, därav namnet. Vi behöver en repro så att vi kan återskapa felet på våra datorer. Koden bör vara tillräcklig för att skapa en grundläggande körbar fil som kompileras och körs. Eller så skulle det kompileras och köras, om det inte vore för problemet du hittade. En repro är inte ett kodfragment. Den bör ha fullständiga funktioner och klasser och innehålla alla nödvändiga #include direktiv, även för standardrubrikerna.
Vad gör en bra repro
En bra repro är:
- Minimal. Repros bör vara så liten som möjligt men ändå visa exakt det problem du hittade. Repros behöver inte vara komplex eller realistisk. De behöver bara visa kod som överensstämmer med standarden eller den dokumenterade kompilatorimplementeringen. För en diagnostik som saknas bör din repro visa koden som inte är överensstämmande. Enkla, rakt-på-sak-repros som innehåller bara tillräckligt med kod för att demonstrera problemet är de bästa. Om du kan eliminera eller förenkla koden och förbli överensstämmande och även lämna problemet oförändrat gör du det. Du behöver inte ta med motexempel på kod som fungerar. 
- Fristående. Repros bör undvika onödiga beroenden. Om du kan återskapa problemet utan bibliotek från tredje part, gör det. Om du kan återskapa problemet utan någon bibliotekskod förutom enkla utdatainstruktioner (till exempel - puts("this shouldn't compile");,- std::cout << value;och- printf("%d\n", value);), gör du det. Det är idealiskt om exemplet kan komprimeras till en enda källkodsfil, utan hänvisning till några användarhuvuden. Att minska mängden kod som vi måste betrakta som en möjlig bidragsgivare till problemet är oerhört användbart för oss.
- Mot den senaste kompilatorversionen. Repros bör använda den senaste uppdateringen av den senaste versionen av verktygsuppsättningen när det är möjligt. Du kan också använda den senaste förhandsversionen av nästa uppdatering eller nästa större version. Problem som kan uppstå i äldre versioner av verktygsuppsättningen åtgärdas ofta i nyare versioner. Korrigeringar bakåtporteras endast till äldre versioner i undantagsfall. 
- Kontrolleras mot andra kompilatorer om det är relevant. Repros som omfattar portabel C++-kod bör verifiera beteendet mot andra kompilatorer om möjligt. C++-standarden avgör slutligen programmets korrekthet och ingen kompilator är perfekt. Men när Clang och GCC accepterar din kod utan diagnostik, och MSVC inte gör det, hittade du förmodligen en bugg i vår kompilator. (Andra möjligheter är skillnader i Unix- och Windows-beteende, eller olika nivåer av implementering av C++-standarder och så vidare.) När alla kompilatorer avvisar din kod är det troligt att koden är felaktig. Om du ser olika felmeddelanden kan du diagnostisera problemet själv. - Du hittar listor över onlinekompilatorer som du kan testa koden mot i C++-kompilatorer online på ISO C++-webbplatsen, eller den här utvalda listan över C++-kompilatorer online på GitHub. Några specifika exempel är Wandbox och Compiler Explorer. - Anmärkning - Online-kompilatorwebbplatserna är inte anslutna till Microsoft. Många online-kompilatorwebbplatser körs som personliga projekt. Vissa av dessa webbplatser kanske inte är tillgängliga när du läser detta, men en sökning bör hitta andra som du kan använda. 
Problem i kompilatorn, länkaren och i biblioteken tenderar att visa sig på särskilda sätt. Typen av problem du hittar avgör vilken typ av reproducerbart exempel du ska inkludera i din rapport. Utan en lämplig repro har vi inget att undersöka. Här är några av de typer av problem som du kan se. Vi innehåller instruktioner för hur du genererar den typ av repro som du bör använda för att rapportera varje typ av problem.
Frontend-krasch (parser)
Frontend-krascher inträffar under kompilatorns parsningsfas. Vanligtvis genererar kompilatorn allvarligt fel C1001 och refererar till källkodsfilen och radnumret som felet inträffade på. Ofta nämns en fil med namnet msc1.cpp, men du kan ignorera den här informationen.
För den här typen av krasch anger du en färdigställd reproduktion.
Här är exempel på kompilatorutdata för den här typen av krasch:
SandBoxHost.cpp
d:\o\dev\search\foundation\common\tools\sandbox\managed\managed.h(929):
        fatal error C1001: An internal error has occurred in the compiler.
(compiler file 'msc1.cpp', line 1369)
To work around this problem, try simplifying or changing the program near the
        locations listed above.
Please choose the Technical Support command on the Visual C++
Help menu, or open the Technical Support help file for more information
d:\o\dev\search\foundation\common\tools\sandbox\managed\managed.h(929):
        note: This diagnostic occurred in the compiler generated function
        'void Microsoft::Ceres::Common::Tools::Sandbox::SandBoxedProcess::Dispose(bool)'
Internal Compiler Error in d:\o\dev\otools\bin\x64\cl.exe.  You will be prompted
        to send an error report to Microsoft later.
INTERNAL COMPILER ERROR in 'd:\o\dev\otools\bin\x64\cl.exe'
    Please choose the Technical Support command on the Visual C++
    Help menu, or open the Technical Support help file for more information
Backendkrasch (kodgenerering)
Backend-krascher inträffar under kompilatorns kodgenereringsfas. Kompilatorn genererar vanligtvis allvarligt fel C1001 och kanske inte refererar till källkodsfilen och radnumret som är associerat med problemet. Ofta nämns filkompilatorn\utc\src\p2\main.c, men du kan ignorera den här informationen.
För den här typen av krasch anger du en Link-repro om du använder Link-Time Code Generation (LTCG), som aktiveras av kommandoradsargumentet /GL till cl.exe. Om inte anger du en förbearbetad repro i stället.
Här är exempel på kompilatorutdata för en serverdelskrasch där LTCG inte används. Om kompilatorns utdata ser ut så här bör du ange en förbearbetad repro.
repro.cpp
\\officefile\public\tadg\vc14\comperror\repro.cpp(13) : fatal error C1001:
        An internal error has occurred in the compiler.
(compiler file 'f:\dd\vctools\compiler\utc\src\p2\main.c', line 230)
To work around this problem, try simplifying or changing the program near the
        locations listed above.
Please choose the Technical Support command on the Visual C++
Help menu, or open the Technical Support help file for more information
INTERNAL COMPILER ERROR in
        'C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\cl.exe'
    Please choose the Technical Support command on the Visual C++
    Help menu, or open the Technical Support help file for more information
Om raden som börjar med INTERNT KOMPILATORFEL anger link.exe, i stället för cl.exe, aktiverades LTCG. Ange en repro-länk i det här fallet. När det inte är klart om LTCG har aktiverats från kompilatorns felmeddelande granskar du kommandoradsargumenten. Du kopierade dem från byggloggen i ett tidigare steg för kommandoradsargumentet /GL .
Linker-krasch
Linker kraschar under länkningsfasen när kompilatorn har körts. Vanligtvis genererar länkaren Linker Tools-fel LNK1000.
Anmärkning
Om utdata nämner C1001 eller om det handlar om länktidskodgenerering, referera i stället till Backend-krasch (kodgenerering).
För den här typen av krasch ska du ange en Link repro.
Här är ett exempel på kompilatorutdata för den här typen av krasch:
z:\foo.obj : error LNK1000: Internal error during IMAGE::Pass2
  Version 14.00.22816.0
  ExceptionCode            = C0000005
  ExceptionFlags           = 00000000
  ExceptionAddress         = 00007FF73C9ED0E6 (00007FF73C9E0000)
        "z:\tools\bin\x64\link.exe"
  NumberParameters         = 00000002
  ExceptionInformation[ 0] = 0000000000000000
  ExceptionInformation[ 1] = FFFFFFFFFFFFFFFF
CONTEXT:
  Rax    = 0000000000000400  R8     = 0000000000000000
  Rbx    = 000000655DF82580  R9     = 00007FF840D2E490
  Rcx    = 005C006B006F006F  R10    = 000000655F97E690
  Rdx    = 000000655F97E270  R11    = 0000000000000400
  Rsp    = 000000655F97E248  R12    = 0000000000000000
  Rbp    = 000000655F97EFB0  E13    = 0000000000000000
  Rsi    = 000000655DF82580  R14    = 000000655F97F390
  Rdi    = 0000000000000000  R15    = 0000000000000000
  Rip    = 00007FF73C9ED0E6  EFlags = 0000000000010206
  SegCs  = 0000000000000033  SegDs  = 000000000000002B
  SegSs  = 000000000000002B  SegEs  = 000000000000002B
  SegFs  = 0000000000000053  SegGs  = 000000000000002B
  Dr0    = 0000000000000000  Dr3    = 0000000000000000
  Dr1    = 0000000000000000  Dr6    = 0000000000000000
  Dr2    = 0000000000000000  Dr7    = 0000000000000000
Om inkrementell länk är aktiverad och kraschen inträffade först efter en lyckad första länk, dvs. först efter den första fullständiga länken som en senare inkrementell länk baseras på, anger du också en kopia av objektet (.obj) och biblioteksfilerna (.lib) som motsvarar källfiler som ändrats efter att den första länken har slutförts.
Felaktig kodgenerering
Felaktig kodgenerering är sällsynt. Det inträffar när kompilatorn felaktigt genererar felaktig kod som gör att programmet kraschar vid körning. I stället bör den generera rätt kod eller identifiera ett problem vid kompileringstillfället. Om du tror att problemet du hittade resulterar i felaktig kodgenerering behandlar du rapporten på samma sätt som en serverdelskrasch (kodgenerering).
För den här typen av krasch, ange en Länkrepro om du använder kommandoradsargumentet /GL till cl.exe. Ange en förbearbetad repro om inte.
Så här genererar du en repro
För att hjälpa oss att spåra orsaken till problemet är en bra repro avgörande. Innan du utför något av stegen nedan för specifika typer av repros kan du försöka komprimera koden som visar problemet så mycket som möjligt. Försök att eliminera eller minimera beroenden, nödvändiga rubriker och bibliotek. Begränsa de kompilatoralternativ och förprocessordefinitioner som används, om möjligt.
Nedan visas instruktioner för att generera olika typer av repros som ska användas för att rapportera olika typer av problem.
Förbehandlade reproarbeten
En förbearbetad repro är en enda källfil som visar ett problem. Den genereras från utdata från C-förprocessorn. Om du vill skapa en använder du kompileringsalternativet /P i den ursprungliga repro-källfilen. Det här alternativet anger de inkluderade rubrikerna för att ta bort beroenden för andra käll- och huvudfiler. Alternativet löser även makron, #ifdef villkor och andra förprocessorkommandon som kan vara beroende av din lokala miljö.
Anmärkning
Förbearbetade repros är inte lika användbara för problem som kan bero på buggar i vår standardbiblioteksimplementering, eftersom vi ofta vill ersätta vår senaste pågående implementering för att se om vi redan har åtgärdat problemet. I det här fallet ska du inte förbearbeta repro och om du inte kan minska problemet till en enda källfil, paketera koden i en .zip fil eller liknande, eller överväg att använda en IDE-projektrepro. För mer information, se Övriga reproduktionsinställningar.
Förbearbeta en källkodsfil
- Samla in de kommandoradsargument som används för att skapa din repro, enligt beskrivningen i Rapportera innehållet på kommandoraden. 
- Öppna kommandotolken För utvecklare som matchar Visual Studio-versionen och konfigurationsarkitekturen som används för att skapa projektet. 
- Ändra till katalogen som innehåller ditt repro-projekt. 
- I konsolfönstret för kommandotolken för utvecklare anger du kommandot cl /Pargumentfilename.cpp. För argument använder du listan med argument som du har samlat in ovan. filename.cpp är namnet på din repro-källfil. Det här kommandot replikerar kommandoraden som du använde för repro, men stoppar kompilering efter förprocessorpasset. Sedan skriver den förbearbetade källkoden till filename.i. 
Om du förbearbetar en C++/CX-källkodsfil, eller om du använder funktionen C++-moduler, krävs några fler steg. Mer information finns i avsnitten nedan.
När du har genererat den förbearbetade filen är det en bra idé att se till att problemet fortfarande återkommer när du kompilerar den förbearbetade filen.
Kontrollera att den förbearbetade filen fortfarande återger felet
- I konsolfönstret för kommandoprompten för utvecklare anger du kommandot clargumenten/TPfilnamnet.i för att instruera cl.exe att kompilera den förbearbetade filen som en C++-källfil. Argumenten är samma argument som samlas in ovan, men med argumenten /D och /I borttagna. Det beror på att de redan har inkluderats i den förbearbetade filen. filename.i är namnet på den förbearbetade filen. 
- Bekräfta att problemet har återskapats. 
Bifoga slutligen det förbearbetade repro-filnamnet.i till rapporten.
Förbearbetad C++/CX WinRT/UWP-kodreplikering
Om du använder C++/CX för att skapa din körbara fil finns det några extra steg som krävs för att skapa och verifiera en förbearbetad repro.
Förbearbeta C++/CX-källkod
- Skapa en förbearbetad källfil enligt beskrivningen i Förbearbeta en källkodsfil. 
- Sök i den skapade filen filename.i efter #using-direktiv. 
- Skapa en lista över alla refererade filer. Utelämna alla Windows*.winmd-filer, platform.winmd-filer och mscorlib.dll. 
För att förbereda för att verifiera att den förbearbetade filen fortfarande återskapar problemet,
- Skapa en ny katalog för den förbearbetade filen och kopiera den till den nya katalogen. 
- Kopiera winmd-filerna från din #using-lista till den nya katalogen. 
- Skapa en tom vccorlib.h-fil i den nya katalogen. 
- Redigera den förbearbetade filen för att ta bort alla #using direktiv för mscorlib.dll. 
- Redigera den förbearbetade filen för att ändra alla absoluta sökvägar till bara de tomma filnamnen för de kopierade .winmd-filerna. 
Bekräfta att den förbearbetade filen fortfarande återskapar problemet, enligt ovan.
Förbearbetade C++-moduler repros
Om du använder modulfunktionen i C++-kompilatorn finns det några olika steg som krävs för att skapa och verifiera en förbearbetad repro.
Förbearbeta en källkodsfil som använder en modul
- Samla in de kommandoradsargument som används för att skapa din repro, enligt beskrivningen i Rapportera innehållet på kommandoraden. 
- Öppna kommandotolken För utvecklare som matchar Visual Studio-versionen och konfigurationsarkitekturen som används för att skapa projektet. 
- Ändra till katalogen som innehåller ditt repro-projekt. 
- I konsolfönstret för kommandotolken för utvecklare anger du kommandot cl /Pargumentfilename.cpp. Argumenten är argumenten som samlas in ovan och filename.cpp är namnet på källfilen som använder modulen. 
- Ändra till katalogen som innehåller repro-projektet som skapade modulgränssnittet (.ifc-utdata). 
- Samla in de kommandoradsargument som används för att skapa modulgränssnittet. 
- I konsolfönstret för kommandotolken för utvecklare anger du kommandot cl /Pargumentmodulename.ixx. Argumenten är argumenten som samlas in ovan och modulename.ixx är namnet på filen som skapar modulgränssnittet. 
När du har genererat de förbearbetade filerna är det en bra idé att se till att problemet fortfarande uppstår när du använder de förbearbetade filerna.
Kontrollera att den förbearbetade filen fortfarande återger felet
- I utvecklarkonsolfönstret ändrar du tillbaka till katalogen som innehåller ditt repro-projekt. 
- Ange kommandot clargument/TPfilnamn.i som ovan för att kompilera den förbearbetade filen som om den vore en C++-källfil. 
- Bekräfta att problemet fortfarande återskapas av den förbearbetade filen. 
Bifoga slutligen de förbearbetade repro-filerna (filename.i och modulename.i) tillsammans med .ifc-utdata till rapporten.
Länka reproduktioner
En länkrepro är det länkskapade innehållet i en katalog, som anges av miljövariabeln link_repro eller som ett argument till alternativet /LINKREPRO-länkare . Den innehåller byggartefakter som tillsammans visar ett problem som uppstår under länkningsfasen. Exempel är en serverdelskrasch som involverar LTCG (Link-Time Code Generation) eller en länkkrasch. Dessa byggartefakter är de som behövs som länkningsindata så att problemet kan återskapas. En länkrepro kan enkelt skapas med hjälp av den här miljövariabeln. Det aktiverar länkverktygets inbyggda förmåga att generera reproduktioner.
Generera en länkrepro med hjälp av miljövariabeln link_repro
- Samla in de kommandoradsargument som används för att skapa din repro, enligt beskrivningen i Rapportera innehållet på kommandoraden. 
- Öppna kommandotolken För utvecklare som matchar Visual Studio-versionen och konfigurationsarkitekturen som används för att skapa projektet. 
- I konsolfönstret för kommandotolken för utvecklare ändrar du till katalogen som innehåller ditt repro-projekt. 
- Ange mkdir linkrepro för att skapa en katalog med namnet linkrepro för länkrepro. Du kan använda ett annat namn för att fånga en annan länkrepresentation. 
- Ange kommandouppsättningen link_repro=linkrepro för att ange link_repro miljövariabeln till den katalog som du skapade. Om bygget körs från en annan katalog, vilket ofta är fallet för mer komplexa projekt, anger du i stället link_repro till den fullständiga sökvägen till länkrepro-katalogen. 
- Om du vill skapa repro-projektet i Visual Studio går du till konsolfönstret för kommandotolken för utvecklare och anger kommandot devenv. Det säkerställer att värdet för link_repro miljövariabeln är synligt för Visual Studio. Om du vill skapa projektet på kommandoraden använder du kommandoradsargumenten som samlats in ovan för att duplicera repro-versionen. 
- Skapa ditt repro-projekt och bekräfta att det förväntade problemet inträffade. 
- Stäng Visual Studio om du använde det för att utföra bygget. 
- I konsolfönstret för kommandotolken för utvecklare, skriv kommandot set link_repro= för att rensa link_repro miljövariabel. 
Paketera slutligen repro genom att komprimera hela linkrepro-katalogen till en .zip fil eller liknande och bifoga den i rapporten.
Alternativet /LINKREPRO-länkare har samma effekt som link_repro miljövariabeln. Du kan använda alternativet /LINKREPROTARGET för att ange namnet som ska filtreras på för den genererade länkrepro. Om du vill använda /LINKREPROTARGET måste du också ange linkeralternativet /OUT.
Generera en länkrepro med alternativet /LINKREPRO
- Skapa en katalog för att lagra länkrepro. Vi refererar till den fullständiga katalogsökväg som du skapar som katalogsökväg. Använd dubbla citattecken runt sökvägen om den innehåller blanksteg. 
- Lägg till kommandot /LINKREPRO:directory-path på länkkommandoraden. Öppna dialogrutan Egenskapssidor för projektet i Visual Studio. Välj egenskapssidan Konfigurationsegenskaper>Linker>kommandorad. Ange sedan alternativet /LINKREPRO:directory-path i rutan Ytterligare alternativ . Välj OK för att spara ändringarna. 
- Skapa ditt repro-projekt och bekräfta att det förväntade problemet har inträffat. 
Paketera slutligen repro genom att komprimera hela katalogsökvägen för reprokatalogen till en .zip-fil eller liknande och bifoga den till rapporten.
Andra reproduktioner
Om du inte kan minska problemet till en enda källfil eller förbearbetad repro, och problemet inte kräver någon länkrepro, kan vi undersöka ett IDE-projekt. All vägledning om hur du skapar en bra repro gäller fortfarande: Koden borde vara minimal och självständig. Problemet bör uppstå i våra senaste verktyg, och om det är relevant bör det inte visas i andra kompilatorer.
Skapa din repro som ett minimalt IDE-projekt och paketera det sedan genom att komprimera hela katalogstrukturen till en .zip fil eller liknande och bifoga den i rapporten.
Sätt att skicka rapporten
Du har ett par bra sätt att få din rapport till oss. Du kan använda Visual Studio inbyggda problemrapporteringsverktyg eller sidan Visual Studio Developer Community . Det finns också en produktfeedback-knapp längst ned på den här sidan. Valet beror på om du vill använda de inbyggda verktygen i IDE för att ta skärmdumpar och organisera rapporten. Om du föredrar att inte göra det kan du använda utvecklarcommunityns webbplats direkt.
Anmärkning
Oavsett hur du skickar din rapport respekterar Microsoft din integritet. Microsoft har åtagit sig att följa alla lagar och regler för datasekretess. Information om hur vi behandlar de data som du skickar till oss finns i Microsofts sekretesspolicy.
Använda verktyget Rapportera ett problem
Verktyget Rapportera ett problem i Visual Studio är ett sätt för Visual Studio-användare att rapportera problem med bara några klickningar. Det visas ett enkelt formulär för att skicka detaljerad information om problemet du hittade. Du kan sedan skicka din rapport utan att lämna IDE:t.
Det är enkelt och bekvämt att rapportera problemet via verktyget Rapportera ett problem från IDE. Du kan komma åt den från namnlisten genom att välja ikonen Skicka feedback bredvid sökrutan Snabbstart . Du kan också hitta den på menyraden i Hjälp>skicka feedback>rapportera ett problem.
När du väljer att rapportera ett problem söker du först i utvecklarcommunityn efter liknande problem. Om problemet har rapporterats tidigare kan du lägga till rapporten och lägga till kommentarer med mer information. Om du inte ser något liknande problem väljer du knappen Rapportera nytt problem längst ned i dialogrutan Visual Studio Feedback och följer stegen för att rapportera problemet.
Använda Visual Studio Developer Community-sidorna
Visual Studio Developer Community-sidorna är ett annat praktiskt sätt att rapportera problem och hitta lösningar för Visual Studio och C++-kompilatorn, verktygen och biblioteken. Det finns specifika communitysidor för utvecklare för Visual Studio, Visual Studio för Mac, .NET, C++, Azure DevOps och Azure DevOps Server.
Under communityflikarna, längst upp på varje sida, finns en sökruta. Du kan använda den för att hitta inlägg som rapporterar problem som liknar dina. Det kan finnas en lösning eller så finns det redan annan användbar information om problemet. Om någon har rapporterat samma problem tidigare kan du gå vidare och kommentera rapporten i stället för att skapa en ny problemrapport. Om du vill kommentera, rösta eller rapportera ett nytt problem kan du bli ombedd att logga in på ditt Visual Studio-konto. Första gången du loggar in måste du godkänna att ge utvecklarcommunityappen åtkomst till din profil.
Om du har problem med C++-kompilatorn, länkaren och andra verktyg och bibliotek söker du först på sidan C++ Utvecklarcommunity . Om du söker efter problemet och det inte redan har rapporterats väljer du knappen Rapportera ett problem bredvid sökrutan. Du kan inkludera din återgivningskod och kommandorad, skärmbilder, länkar till relaterade diskussioner och annan information som du tycker är relevant och användbar.
Tips/Råd
Informationen i den första utvecklarcommunityrapporten kommer alltid att vara offentlig. Om detta är ett problem kan du läsa nästa avsnitt om Rapporter och sekretess.
Tips/Råd
För andra typer av problem som du kan hitta i Visual Studio som inte är relaterade till C++-verktygsuppsättningen (till exempel problem med användargränssnittet, brutna IDE-funktioner eller allmänna krascher) använder du verktyget Rapportera ett problem i IDE. Det här är det bästa valet på grund av dess skärmbildsfunktioner och dess möjlighet att registrera användargränssnittsåtgärder som leder till det problem som du hittade. Den här typen av fel kan också letas upp på webbplatsen för Visual Studio Developer Community . Mer information finns i Rapportera ett problem med Visual Studio.
Rapporter och sekretess
All information i rapporter och eventuella kommentarer och svar är offentligt synliga som standard. Normalt är det en fördel eftersom det gör att hela communityn kan se problem, lösningar och lösningar som andra användare har hittat. Men om du är orolig för att göra dina data eller identiteter offentliga, av sekretess- eller immateriella skäl, har du alternativ.
Om du är orolig för att avslöja din identitet skapar du ett nytt Microsoft-konto som inte avslöjar någon information om dig. Använd det här kontot för att skapa rapporten.
Placera inte något som du vill hålla privat i rubriken eller innehållet i den första rapporten, som är offentlig. Anta i stället att du skickar information privat i en separat kommentar. Om du vill se till att rapporten dirigeras till rätt personer tar du med cppcompiler i ämneslistan för din problemrapport. När problemrapporten har skapats går det nu att ange vem som kan se dina svar och bifogade filer.
Skapa en problemrapport för privat information
- I rapporten du skapade väljer du Lägg till kommentar för att skapa en privat beskrivning av problemet. 
- I svarsredigeraren använder du listrutekontrollen under knapparna Skicka och Avbryt för att ange målgruppen för ditt svar. Endast de personer som du anger kan se dessa privata svar och eventuella bilder, länkar eller kod som du inkluderar i dem. Välj som kan visas av moderatorer och den ursprungliga affischen för att begränsa synligheten för Microsoft-anställda och dig själv. 
- Lägg till beskrivningen och annan information, bilder och bifogade filer som behövs för din repro. Välj knappen Skicka för att skicka informationen privat. - Det finns en gräns på 2 GB för bifogade filer och högst 10 filer. För större uppladdningar begär du en uppladdnings-URL i din privata kommentar. 
Alla svar under den här kommentaren har samma begränsade synlighet som du angav. Det är sant även om listrutekontrollen för svar inte visar den begränsade synlighetsstatusen korrekt.
Var försiktig om du vill behålla din integritet och hålla känslig information borta från offentligheten. Begränsa all interaktion med Microsoft till svar inom den begränsade kommentaren. Svar på andra kommentarer kan leda till att du oavsiktligt lämnar ut känslig information.
Rapportera ett C++-dokumentationsproblem
Vi använder GitHub-problem för att spåra problem som rapporteras i vår dokumentation. Nu kan du skapa GitHub-problem direkt från en innehållssida, vilket gör att du kan interagera på ett rikare sätt med författare och produktteam. Om du ser ett problem med ett dokument, ett exempel på felaktig kod, en förvirrande förklaring, en kritisk utelämnande eller till och med bara ett stavfel kan du enkelt meddela oss. Rulla längst ned på sidan och välj Logga in för att ge feedback om dokumentationen. Du måste skapa ett GitHub-konto om du inte redan har ett. När du har ett GitHub-konto kan du se alla våra dokumentationsproblem och deras status. Du får också meddelanden när ändringar görs för det problem som du rapporterade. Mer information finns i blogginlägget feedbacksystem.
Du skapar ett dokumentationsproblem på GitHub när du använder feedbackknappen för dokumentation. Problemet fylls automatiskt i med viss information om sidan som du skapade problemet på. Det är så vi vet var problemet finns, så redigera inte den här informationen. Lägg bara till information om vad som är fel, och om du vill, en föreslagen korrigering. Våra C++-dokument är öppen källkod, så om du vill skicka en korrigering själv kan du göra det. Mer information om hur du kan bidra till vår dokumentation finns i vår bidragsguide på GitHub.