Sdílet prostřednictvím


Zadání symbolu (.pdb) a zdrojových souborů v ladicím programu sady Visual Studio

Vyhledejte a zadejte soubory symbolů a zdrojové soubory; určit chování načítání symbolů, použijte symboly a zdrojové servery; načtěte symboly automaticky nebo na požádání.

Obsah

Najít symbol soubory (PDB)

Najít zdrojové soubory

Hledání souborů symbolů (PDB)

[!POZNÁMKA]

Ve verzích aplikace Visual Studio před VS 2012 vyžadoval kód spravovaný laděním na vzdáleném zařízení, aby byly soubory symbolů také umístěny ve vzdáleném počítači.To již neplatí.Všechny soubory symbolů musí být umístěny v místním počítači nebo v umístění zadaném na stránce Ladění / Symboly dialogového okna Možnosti aplikace Visual Studio.Podívejte se na téma .NET vzdálené Symbol načítání změn ve Visual Studio 2012 a 2013 na blogu životního cyklu aplikací společnosti Microsoft.

  • Pokud ladicí program vyhledává soubory PDB | Proč soubory symbolů musí přesně odpovídat spustitelným souborům? | Zadejte umístění symbolu a chování načítání | Použít servery symbolů k vyhledání souborů symbolů nenainstalovaných v místním počítači | Najít a načíst symboly při ladění | Nastavit možnosti kompilátoru pro soubory symbolů

Souboru databáze (PDB) program, nazývaný také soubor symbolů, mapuje identifikátory, které vytvoříte ve zdrojových souborech pro třídy, metody a jiný kód, na identifikátory, které jsou použity v kompilovaných spustitelných souborech projektu.Soubor PDB také mapuje příkazy ve zdrojovém kódu k provozním pokynům ve spustitelných souborech.Ladicí program používá tyto informace k určení dvou důležitých informací: zdrojový soubor a číslo řádku, které jsou zobrazeny v prostředí IDE sady Visual Studio a v umístění ve spustitelném souboru, kde je třeba se zastavit při nastavení zarážky.Soubor symbolů obsahuje také původní umístění zdrojových souborů, případně umístění zdrojového serveru, ze kterého lze načíst zdrojové soubory.

Při ladění projektu v integrovaném vývojovém prostředí sady Visual Studio ví ladicí program přesně, kde lze nalézt soubory .pdb a zdrojové soubory pro váš kód.Pokud chcete ladit kód mimo váš zdrojový kód projektu, jako je volání systému Windows nebo kódu třetí strany, musíte určit umístění souboru PDB (a volitelně zdrojových souborů z externího kódu) a tyto soubory musí přesně odpovídat spustitelným souborům sestavení.

Pokud ladicí program vyhledává soubory PDB

  1. Umístění, které je zadáno uvnitř knihovny DLL nebo spustitelného souboru.

    (Ve výchozím nastavení, pokud máte vytvořenou knihovnu DLL nebo spustitelný soubor ve vašem počítači, linker umístí úplnou cestu a název souboru přidruženého souboru PDB do knihovny DLL nebo spustitelného souboru.Ladicí program nejprve zkontroluje, zda existuje soubor se symboly v umístění, které je zadáno v knihovně DLL nebo spustitelném souboru.To je užitečné, protože budete mít vždy symboly, které jsou k dispozici pro kód, který jste zkompilovali v počítači.)

  2. Soubory PDB, které mohou být uloženy ve stejné složce jako knihovna DLL nebo spustitelný soubor.

  3. Všechny složky mezipaměti místního symbolu.

  4. Všechny zadané servery sítě, Internetu nebo místních symbolů a umístění, například server Microsoft symbol, pokud je povolen.

Zpět na začátek Hledání souborů symbolů (PDB)

Zpět na začátek Obsah

Proč soubory symbolů musí přesně odpovídat spustitelným souborům?

Ladicí program načte pouze soubor PDB pro spustitelný soubor, který přesně odpovídá souboru .pdb vytvořeném, když byl sestaven spustitelný soubor (to znamená, že PDB musí být originál nebo kopie původního souboru .pdb).Vzhledem k tomu, že kompilátor je optimalizován pro rychlost kompilace, kromě svého hlavního úkolu vytvoření správného a efektivního kódu, se může změnit rozložení skutečného spustitelného souboru i v případě, že nedošlo ke změně samotného kódu.Další informace naleznete v příspěvku blogu MSDN Proč sada Visual Studio vyžaduje soubory symbolů ladicího programu, aby *přesně* odpovídaly binárním souborům, se kterými byly vytvořeny?

Zpět na začátek Hledání souborů symbolů (PDB)

Zpět na začátek Obsah

Zadejte umístění symbolu a chování načítání

Při ladění projektu v integrovaném vývojovém prostředí VS ladicí program automaticky načte soubory symbolů, které jsou umístěny v adresáři projektu.Můžete zadat alternativní vyhledávací cesty a symbol servery pro společnosti Microsoft, Windows nebo součásti třetích stran v ladění/symboly stránky VS Možnosti dialogové okno.Na stránce Symboly můžete také určit konkrétní moduly, pro které má ladicí program automaticky načíst symboly.A můžete potom změnit tato nastavení ručně při aktivním ladění.

Otevření stránky Ladění / symboly

  1. V nabídce Ladit zvolte položku Možnosti.

  2. V Možnosti dialogové okno zvolte symboly pod ladění uzlu.

Nástroje - možnosti - ladění - symboly stránky

Zadejte umístění serveru nebo vyhledávání symbol

  1. Vyberte složku Nástroje / možnosti / ikonu složky ladění/symboly ikonu.Upravitelný text se zobrazí v poli Umístění souborů se symboly (.pdb).

  2. Zadejte adresu URL nebo cestu k adresáři serveru symbolů nebo umístění symbolu.Doplňování výrazů vám pomůže najít správný formát.

  3. Symbol zlepšit výkon při načítání zadejte cestu místního adresáře zkopírovány symboly symbol servery v mezipaměti symboly v tomto adresáři pole místní adresář, který lze zkopírovat symboly.

    [!POZNÁMKA]

    Neumísťujte mezipaměť symbolu do chráněné složky (například C:\Windows nebo některé z jejích podsložek).Místo toho použijte složku pro čtení i zápis.

Zadejte chování načítání symbolu

Můžete určit, aby soubory, které mají být načteny automaticky z umístění pole Umístění souboru souborů (.pdb) při spuštění ladění.Soubory se symboly v adresáři projektu jsou vždy načteny.

  1. Zvolte Všechny moduly, kromě vyloučených k načtení všech symbolů pro všechny moduly, kromě těch, které určíte, když zvolíte odkaz Zadat vyloučené moduly.

  2. Zvolte možnost Pouze určené moduly a potom vyberte Určit moduly pro uvedení seznamu modulů, které soubory symbolů , které chcete načíst automaticky.Soubory symbolů pro ostatní moduly jsou ignorovány.

Určit další možnosti symbolu.

Následující možnost můžete najít na stránce Ladění / Obecné v dialogovém okně Možnosti VS:

Varovat, pokud při spuštění nejsou žádné symboly (pouze pro Nativní režim)

Pokud je vybráno, zobrazí dialogové okno upozornění, když se pokusíte pro ladění programů, pro kterou ladicí program neobsahuje žádné symbolické informace.

Načtení exportů DLL

Při výběru načte exportní tabulky knihovny DLL.Symbolické informace z tabulky exportu knihovny DLL mohou být užitečné, pokud pracujete se zprávami systému Windows, postupy systému Windows (WindowProcs), objekty COM nebo zařazování nebo libovolnou knihovnou DLL pro kterou nemáte symboly.Informace o exportu knihovny DLL pro čtení zahrnují nadměrné zatížení.Proto tato možnost je ve výchozím nastavení vypnuta.

Chcete-li vidět, jaké symboly jsou k dispozici v exportní tabulce knihovny DLL, použijte dumpbin /exports.Symboly jsou k dispozici pro všechny 32bitové systémové knihovny DLL.Po přečtení výstupu dumpbin /exports uvidíte přesný název funkce včetně nealfanumerických znaků.To je užitečné pro nastavení zarážky na funkci.Názvy funkcí z tabulky exportu knihovny DLL se mohou jinde v ladícím programu zobrazit ořezané.Volání jsou uvedena v pořadí volání s aktuální funkcí (nejhlouběji vnořených) nahoře.Další informace naleznete zde: dumpbin /exports.

Zpět na začátek Obsah | Hledání souborů symbolů (PDB)

Použít servery symbolů k vyhledání souborů symbolů nenainstalovaných v místním počítači

Visual Studio může stáhnout soubory symbolu ladění ze serverů symbolů, které implementují protokol symsrv.Visual Studio Team Foundation Server a Debugging Tools for Windows jsou dva nástroje, které implementují servery symbolů.Zadejte symbolové servery k použitím v dialogovém okně Možnosti VS.

Mezi servery se symboly, které můžete použít, patří:

Servery společnosti Microsoft s veřejnými symboly

Pokud chcete ladit selhání, ke kterému dojde během volání systémové knihovny DLL nebo knihovny třetí strany, budete často potřebovat systémové soubory .pdb, které obsahují symboly pro soubory DLL, EXE a ovladače zařízení v systému Windows.Tyto symboly můžete získat na veřejných serverech symbolů společnosti Microsoft.Veřejný server se symboly společnosti Microsoft poskytuje symboly pro operační systémy Windows společně s MDAC, IIS, ISA a .NET Framework.

Pokud chcete použít servery symbolů společnosti Microsoft, vyberte Možnosti a nastavení v nabídce Ladění a potom zvolte Symboly.Vyberte možnost Microsoft Symbol Servers.

Servery se symboly v interní síti nebo v místním počítači

Váš tým nebo společnost může vytvořit servery symbolů pro vaše vlastní produkty jako mezipaměť pro symboly z externích zdrojů.Symbolový server můžete mít na vlastním počítači.Můžete zadat umístění serverů symbolů jako adresu URL nebo cestu na stránce Ladění/Symboly dialogu Možnosti VS.

Servery symbolů jiných výrobců

Jiní zprostředkovatelé aplikací a knihoven systému Windows mohou poskytovat přístup k symbolovému serveru na internetu.Také zadejte adresu URL těchto serverů symbolů na stránce Ladění/Symboly.

[!POZNÁMKA]

Pokud používáte symbolový server jiný než veřejné symbolové servery společnosti Microsoft, přesvědčte se, zda symbolový server a jeho cesty jsou důvěryhodné.Vzhledem k tomu, že soubory se symboly mohou obsahovat libovolný spustitelný kód, můžete se vystavit bezpečnostním hrozbám.

Zpět na začátek Obsah | Hledání souborů symbolů (PDB)

Najít a načíst symboly při ladění

V každém okamžiku, kdy je ladicí program v režimu pozastavení, můžete načíst symboly pro modul, který byl dříve vyloučen možnostmi ladicího programu nebo které kompilátor nemůže najít.Symboly můžete načíst z místních nabídek oken Zásobník volání, Moduly, Lokální, Automatické a Všechna kukátka.Pokud ladicí program se přeruší v kódu, který nemá symbol nebo zdrojové soubory k dispozici, zobrazí se okno dokumentu.Zde naleznete informace o chybějících souborech a provedení akcí k jejich vyhledání a načtení.

Hledání symbolů se stránkami dokumentu Nebyly načteny žádné symboly

Existuje několik způsobů ladicí program, který má být rozdělen do kódu, který nemá symboly, které jsou k dispozici:

  1. Krokování kódu.

  2. Rozdělení do kódu od zarážky nebo výjimky.

  3. Přepnutí do jiného podprocesu.

  4. Změna zásobníku dvojitým kliknutím na snímek v okně zásobník volání.

Při jedné z těchto událostí ladicí program zobrazí stránku Nejsou načteny žádné symboly, stránka vám může pomoci najít a načíst potřebné symboly.

Žádná stránka načíst symboly

  • Chcete-li změnit cesty hledání, zvolte nevybranou cestu nebo možnost Nová a zadejte novou cestu.Zvolte Načíst pro hledání cest a načtení souboru symbolů, pokud je nalezen.

  • Zvolte Procházet a najítnázev spustitelného souboru**...** přepsat jakékoli volby symbolu a opakujte cesty vyhledávání.Pokud je nalezen soubor symbolů, bude načten, nebo se zobrazí Průzkumník souborů, kde můžete soubor symbolu vybrat ručně.

  • Zvolte Zobrazit nastavení symbolů... pro zobrazení stránky Ladění / Symboly v dialogovém okně Možnosti VS.

  • Zvolte zobrazení zpětný překlad chcete-li zobrazit v novém okně zpětný překlad jednou.

  • Vždy zobrazovat zpětný překlad, když nejsou nalezeny soubory zdroj nebo symbol, zvolte dialogové okno Možnosti propojit a vyberte obě Povolí ladění úrovně adresa a převodu zobrazit, pokud není k dispozici zdroj.

    Možnosti / ladění / Obecné možnosti zpětný překlad

Změňte možnosti symbolu z místní nabídky

Při práci v režimu pozastavení můžete najít a načíst symboly pro položky, které jsou zobrazeny v oknech Zásobník volání, Moduly, Lokální, Automatické a všech oknech Kukátka.V okně vyberte položku, otevřete místní nabídku a zvolte jednu z následujících možností:

Možnost

Popis

Načtení symbolů

Pokusí se načíst symboly z umístění zadaného na stránce Ladění / Symboly dialogového okna Možnosti.Pokud nelze najít soubor symbolů, spustí se Průzkumník souborů, takže můžete určit nové umístění pro hledání.

Informace o načítání symbolů

Představuje informace, které vykazují umístění načteného souboru se symbolem nebo prohledávána umístění, pokud ladicí program nemůže najít soubor.

Nastavení symbolu...

Otevře stránku Ladění / Symboly dialogového okna Možnosti.

Vždy načítat automaticky

Přidá symbol soubor do seznamu souborů, které jsou automaticky načteny ladicí program.

Zpět na začátek Obsah | Hledání souborů symbolů (PDB)

Nastavit možnosti kompilátoru pro soubory symbolů

Při sestavení projektu z rozhraní IDE VS a použití standardní konfigurace Ladění vytvoří konfigurace sestavení, C++ a spravované kompilátory odpovídající soubory symbolů pro váš kód.Můžete také nastavit možnosti kompilátoru na příkazovém řádku k vytvoření souborů symbolů.

Možnosti jazyka C++

Soubor databáze programu (PDB) uchovává informace o ladění a stavu projektu, které umožňují přírůstkové propojení konfigurace ladění programu.Soubor PDB je vytvořen při sestavení s /ZI nebo /Zi (pro C/C++).

V Visual C++ jmenuje možnost /Fd soubor .pdb vytvořený kompilátorem.Při vytváření projektu v Visual Studio pomocí průvodců je možnost /Fd nastavena na vytvoření souboru .pdb s názvem project.pdb.

Pokud vytváříte aplikace C/C++ pomocí souboru pravidel a určíte /ZI nebo /Zi bez /Fd, v níž se dva soubory PDB:

  • VCx.pdb, kde x představuje verzi jazyka Visual C++, například VC11.pdb.Tento soubor obsahuje všechny informace o ladění pro jednotlivé soubory OBJ a je umístěn ve stejném adresáři jako soubor pravidel projektu.

  • project.pdb   Tento soubor uchovává všechny informace o ladění pro soubor the.exe.Pro jazyk C/C++ je umístěn v podadresáři \debug.

Pokaždé, když se vytvoří soubor s příponou OBJ, kompilátor C/C++ sloučí informace o ladění do VCx.pdb.Vložené informace obsahují informace o typu, ale neobsahují informace o symbolu, jako jsou definice funkce.Tak i v případě, že každý zdrojový soubor obsahuje společné hlavičkové soubory, jako je například < odkazující na Windows >, funkce TypeDef z těchto záhlaví jsou uloženy pouze jednou, a jsou v každém obj. souboru.

Linker vytvoří project.pdb, který obsahuje informace o ladění souboru EXE v projektu.Soubor project.pdb obsahuje úplné ladicí informace, včetně prototypy funkce nejen informace o typu nalezen v VCxpdb.Oba soubory PDB umožňují přírůstkové aktualizace.Linker také vloží cestu k souboru .pdb ve vytvořeném souboru .exe nebo .dll.

Ladicí program Visual Studio používá cestu k souboru .pdb v souboru EXE nebo DLL k vyhledání souboru project.pdb.Pokud ladicí program nemůže najít soubor PDB na tomto místě nebo je-li cesta neplatná (například když byl projekt přesunut do jiného počítače), ladicí program hledá cestu, která obsahuje soubor EXE, cesty symbolů zadané v dialogovém okně Možnosti (složka Ladění, uzel Symboly).Ladicí program nenačte soubor .pdb, který neodpovídá laděnému spustitelnému souboru.Pokud ladicí program nemůže najít soubor PDB, zobrazí se dialogové okno Najít symboly, které umožňuje hledat symboly nebo přidat další umístění pro cestu hledání.

Volby rozhraní .NET Framework

Soubor databáze programu (PDB) uchovává informace o ladění a stavu projektu, které umožňují přírůstkové propojení konfigurace ladění programu.Soubor PDB je vytvořen při sestavení s /debug.Můžete vytvářet aplikace pomocí /debug:full nebo /debug:pdbonly.Sestavení s /debug:full generuje laditelný kód.Sestavení s /debug:pdbonly generuje soubory PDB ale negeneruje DebuggableAttribute, který instruuje kompilátor JIT, že je k dispozici informace o ladění.Použijte /debug:pdbonly, pokud chcete generovat soubory .pdb pro sestavení verze, která nemá být laditelná.Další informace naleznete v tématu /debug (Možnosti kompilátoru C#) nebo /debug (Visual Basic).

Ladicí program Visual Studio používá cestu k souboru .pdb v souboru EXE nebo DLL k vyhledání souboru project.pdb.Pokud ladicí program nemůže najít soubor PDB na tomto místě nebo je-li cesta neplatná, ladicí program hledá cestu, která obsahuje soubor EXE, a poté cesty symbolů zadané v dialogovém okně Možnosti.Tato cesta je obvykle složka Ladění v uzlu Symboly.Ladicí program nenačte soubor .pdb, který neodpovídá laděnému spustitelnému souboru.Pokud ladicí program nemůže najít soubor PDB, zobrazí se dialogové okno Najít symboly, které umožňuje hledat symboly nebo přidat další umístění pro cestu hledání.

Webové aplikace

Konfigurační soubor aplikace (Web.config) musí být nastaven na režim ladění.Režim ladění způsobí, že technologie ASP.NET generuje dynamicky generované soubory a umožňuje ladicímu program připojit k aplikaci technologie ASP.NET.VS tuto hodnotu nastaví automaticky při spuštění ladění, pokud jste vytvořili projekt ze šablony webových projektů.

Obsah | Hledání souborů symbolů (PDB)

Najít zdrojové soubory

  • Kde ladicí program vyhledává zdrojové soubory | Hledání a načítání zdrojových souborů se stránkami Žádný zdrojový kód / Nebyly načteny žádné symboly | Přidat cesty hledání zdrojového souboru do řešení | Použít zdrojové servery

Kde ladicí program vyhledává zdrojové soubory

Ladicí program vyhledá zdrojové soubory v následujících umístěních:

  1. Soubory, které jsou otevřeny v integrovaném vývojovém prostředí sady Visual Studio instance, který spustí ladicí program.

  2. Soubory v řešení, který je otevřeno v instanci VS.

  3. Adresáře, které jsou uvedeny v běžné vlastnosti / Ladit zdrojové soubory stránku ve vlastnostech řešení.

  4. Zdrojové informace o souboru .pdb modulu.To může být umístění zdrojového souboru, když modul byl vytvořen, nebo to může být příkaz na zdrojový server.

Zpět na začátek Obsah | Najít zdrojové soubory

Hledání a načítání zdrojových souborů se stránkami Žádný zdrojový kód / Nebyly načteny žádné symboly

Pokud ladicí program přeruší provádění v místě, kde není k dispozici zdrojový soubor, zobrazí se stránky Není zaveden zdroj nebo Nejsou zavedeny symboly, které vám mohou pomoci najít zdrojový soubor.Nebyly načteny žádné symboly se zobrazí, pokud ladicí program nemůže najít soubor se symboly (PDB) pro spustitelný soubor a dokončit tak hledání.Stránka Žádné symboly poskytuje možnosti pro vyhledání souboru.Pokud je soubor PDB nalezen po spuštění jedné z možností a ladicí program může načíst zdrojový soubor pomocí informací v souboru symbolů, zobrazí se zdroj.Jinak se zobrazí stránka Nenačten žádný zdroj s popisem problému.Na stránce se zobrazí odkazy s možnostmi, které umožňují provádět akce, které mohou problém vyřešit.

Zpět na začátek Obsah | Najít zdrojové soubory

Přidat cesty hledání zdrojového souboru do řešení

Můžete zadat sítě nebo místního adresáře k vyhledání zdrojové soubory.

  1. Vyberte řešení v nástroji Průzkumník řešení a pak zvolte možnost Vlastnosti v místní nabídce.

  2. V uzlu Běžné vlastnosti zvolte Ladit zdrojové soubory.

  3. Klikněte na složku Nástroje / možnosti / ikonu složky ladění/symboly ikonu.Upravitelný text se zobrazí v seznamu Adresáře obsahujícího zdrojový kód.

  4. Přidejte cestu, kterou chcete prohledat.

Všimněte si, že je prohledán pouze zadaný adresář.Je nutné přidat položky pro všechny podadresáře, které chcete prohledávat.

Zpět na začátek Obsah | Najít zdrojové soubory

Použít zdrojové servery

Pokud neexistuje žádný zdrojový kód v místním počítači nebo soubor PDB neodpovídá zdrojovému kódu, můžete použít zdrojový server k ladění aplikace.Zdrojový server přijímá požadavky na soubory a vrací skutečné soubory.Zdrojový server je spuštěn pomocí souboru knihovny DLL s názvem srcsrv.dll.Zdrojový Server přečte soubor PDB aplikace, který obsahuje odkazy na úložiště zdrojového kódu, jakož i příkazy pro načtení zdrojového kódu z úložiště.Můžete omezit, jaké příkazy mohou být provedeny ze souboru .pdb aplikace uvedením seznamu povolených příkazů v souboru s názvem srcsrv.ini, který musí být umístěn ve stejném adresáři jako soubory srcsrv.dll a devenv.exe.

Poznámka k zabezpečeníPoznámka k zabezpečení

Libovolné příkazy lze vložit do souboru v souboru pdb aplikace, takže zkontrolujte, zda umístíte pouze ty, které chcete provést do souboru srcsrv.ini.Pokus o provedení příkazu mimo soubor srcsvr.ini způsobí zobrazení dialogového okna s potvrzením.Další informace naleznete v tématu Upozornění zabezpečení: Ladicí program musí spustit nedůvěryhodný příkaz..Parametry příkazu nejsou ověřovány, proto buďte s důvěryhodnými příkazy opatrní.Například pokud důvěřujete souboru cmd.exe, uživateli se zlými úmysly může zadat parametry, které by z příkazu mohly udělat hrozbu.

Chcete-li povolit použití zdrojového serveru

  1. Ujistěte se, že jsou dodrženy bezpečnostní opatření popsané v předchozí části.

  2. Na Nástroje nabídce zvolte Možnosti.

    Zobrazí se dialogové okno Možnosti.

  3. V uzlu Ladění vyberte Obecné.

  4. Vyberte zaškrtávací políčko Povolit podporu zdrojového serveru.

    Povolení možnosti serveru zdroje

  5. (Volitelné) Podřízené vyberte požadované možnosti.

    Všimněte si, že obě možnosti Povolit zdrojový server pro sestavení částečné důvěryhodnosti (pouze spravované) a Vždy spouštět nedůvěryhodné příkazy ze zdrojového serveru bez vyzvání mohou zvýšit možnost bezpečnostního rizika, které bylo uvedeno výše.

Zpět na začátek Obsah | Najít zdrojové soubory

Viz také

Další zdroje

.NET vzdálené Symbol načítání změn ve Visual Studio 2012 a 2013