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
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ěn v místním počítači nebo v zadané v umístění ladění / symboly stránku sady Visual Studio Možnosti dialogového okna.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
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.)
Soubory PDB, které mohou být uloženy ve stejné složce jako knihovna DLL nebo spustitelný soubor.
Všechny složky mezipaměti místního symbolu.
Všechny zadané servery sítě, Internetu nebo místních symbolů a umístění, například server Microsoft symbol, pokud je povolen.
Hledání souborů symbolů (PDB)
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č Visual Studio vyžadují souborů ladicí program symbolu * právě * odpovídají binární soubory, které byly vytvořeny?
Hledání souborů symbolů (PDB)
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 symboly stránky, můžete také určit, že chcete, aby ladicí program se automaticky načíst symboly pro konkrétní moduly.A můžete potom změnit tato nastavení ručně při aktivním ladění.
Otevření stránky Ladění / symboly
Na ladění nabídce zvolte Možnosti.
V Možnosti dialogové okno zvolte symboly pod ladění uzlu.
Zadejte umístění serveru se symboly nebo umístění, které chcete prohledat
Vyberte složku ikonu.Zobrazuje upravitelný text v Symbol umístění souborů (PDB) pole.
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.
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 zadat soubory, které mají být načteny automaticky ze Symbol umístění souborů (PDB) zadejte umístění při spuštění ladění.Soubory se symboly v adresáři projektu jsou vždy načteny.
Zvolte všechny moduly, není-li vyloučeny načíst všechny symboly pro všechny moduly kromě těch, které zadáte, když zvolíte Zadejte vyloučeny modulů odkazu.
Zvolte zadána modulů pouze a potom vyberte Zadejte modulů seznam modulů, zda je symbol soubory, 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)
Vyberete-li tuto možnost, zobrazí se dialogové okno upozornění při pokusu o ladění programu, pro které 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 zjistit, jaké symboly jsou k dispozici v tabulce exportu knihovny DLL, použijte dumpbin /exports.Symboly jsou k dispozici pro všechny 32bitové systémové knihovny DLL.Načtením dumpbin /exports výstupu, lze zobrazit název funkce stejné, včetně jiných než alfanumerický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 v tématu /EXPORTS dumpbin.
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 ladění symbol soubory můžete stáhnout z symbol serverů, které implementují protokol symsrv.Visual Studio Team Foundation Server a Debugging Tools for Windows jsou dva nástroje, které může implementovat symbol servery.Zadejte symbol servery, které chcete použít v VS Možnosti dialogového okna.
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.Servery veřejné symbol společnosti Microsoft poskytují symboly pro operační systémy Windows, kromě MDAC, služby IIS, ISA a .NET Framework.
Chcete-li použít symbol servery společnosti Microsoft, zvolte Možnosti a nastavení na ladění nabídky a pak zvolte symboly.Vyberte serverů Microsoft Symbol.
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í symbolu servery jako adresu URL nebo cestu na ladění/symboly stránky VS dialogové okno Možnosti.
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.Můžete také zadat adresu URL z těchto serverů symbol ladění/symboly stránky,
[!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.
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ů jak může ladicí program proniknout do kódu, který nemá k dispozici symboly ladicího programu:
Krokování kódu.
Rozdělení do kódu od zarážky nebo výjimky.
Přepnutí do jiného podprocesu.
Změna zásobníku dvojitým kliknutím na snímek v okně Zásobník volání.
Dojde-li k jedné z těchto událostí, ladicí program zobrazí načíst symboly č stránky, které vám pomohou najít a načíst nezbytné symboly.
Chcete-li změnit vyhledávací cesty, zvolte nezaškrtnuté cestu nebo zvolte možnost Nový a zadejte novou cestu.Zvolte načíst znovu hledat cesty a načíst soubor 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 změnit nastavení Symbol Chcete-li zobrazit ladění / symboly stránky v dialogu Možnosti VS.
Zvolte Zobrazit zpětný překlad Chcete-li zobrazit v novém okně jednou převodu.
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.
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číst symboly |
Pokusí se načíst symboly z umístění zadané na ladění / symboly stránku Možnosti dialogového okna.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čtení 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 ladění / symboly stránky VS Možnosti dialogového okna. |
Vždy načítat automaticky |
Přidá soubor symbolů do seznamu souborů, které jsou automaticky načteny pomocí ladicího programu. |
Obsah | Hledání souborů symbolů (PDB)
Nastavit možnosti kompilátoru pro soubory symbolů
Při sestavení projektu z rozhraní IDE VS a použít standardní ladění konfigurace sestavení, C++ a spravované kompilátoru vytvořit soubory odpovídající symboly 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řena při sestavení s /ZI nebo /Zi (pro C/C++).
V Visual C++, /Fd možnost názvy PDB soubor vytvořen pomocí kompilátoru.Při vytváření projektu v Visual Studio pomocí průvodců, /Fd možnost je nastavena na vytvořit soubor PDB s názvem projektupdb.
Pokud vytváříte aplikace C/C++ pomocí souboru pravidel a určíte /ZI nebo /Zi bez /Fd, v níž se dva soubory PDB:
VCxpdb, kde x představuje verze aplikace 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í VCxpdb.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.
Visual Studio Ladicí program používá cestu k souboru PDB v souboru EXE nebo DLL project.pdb soubor vyhledejte.Pokud ladicí program nemůže najít soubor PDB v tomto umístění nebo pokud cesta není platná (například projekt, který byl přesunut do jiného počítače), ladicí program vyhledá cestu, která obsahuje EXE, symbol cesty zadat Možnosti dialogového okna (ladění složku, symboly uzel).Ladicí program nenačte soubor .pdb, který neodpovídá laděnému spustitelnému souboru.Pokud ladicí program nemůže najít soubor PDB Najít symboly se zobrazí dialogové okno, které umožňuje hledat symboly nebo přidání dalších umístění do cesty pro vyhledává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řena při sestavení s /debug.Vytváříte aplikace s /debug:full nebo /debug:pdbonly.Vývoj aplikací s /debug:full generuje debuggable kód.Vývoj aplikací s /debug:pdbonly generuje soubory PDB, ale negeneruje DebuggableAttribute který říká kompilátoru za běhu, že je k dispozici informace o ladění.Použití /debug:pdbonly Pokud budete chtít generovat soubory PDB pro verzi sestavení, která nechcete být debuggable.Další informace naleznete v tématu /debug (Možnosti kompilátoru C#) nebo /debug (Visual Basic).
Visual Studio Ladicí program používá cestu k souboru PDB v souboru EXE nebo DLL project.pdb soubor vyhledejte.Pokud ladicí program nemůže najít soubor PDB v tomto umístění, nebo pokud cesta není platná, ladicí program vyhledá cestu, která obsahuje EXE, a potom zadané cesty symbol v Možnosti dialogového okna.Tato cesta je obvykle ladění složku symboly uzlu.Ladicí program nenačte soubor .pdb, který neodpovídá laděnému spustitelnému souboru.Pokud ladicí program nemůže najít soubor PDB Najít symboly se zobrazí dialogové okno, které umožňuje hledat symboly nebo přidání dalších umístění do cesty pro vyhledává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:
Soubory, které jsou otevřeny v integrovaném vývojovém prostředí Visual Studio instance, které spustilo ladicí program.
Soubory v řešení, který je otevřeno v instanci VS.
Adresáře, které jsou uvedeny v běžné vlastnosti / Ladit zdrojové soubory stránku ve vlastnostech řešení.
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.
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
Když ladicí program dělí provádění na umístění, kde zdrojový soubor není k dispozici, zobrazí načíst zdroj č nebo načíst symboly č stránky, které vám pomohou najít zdrojový soubor.Načíst symboly č se zobrazí, když ladicí program nemůže najít soubor symbol (PDB) pro spustitelný soubor k dokončení 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.V opačném načíst zdroj č se zobrazí stránka, která popisuje potíže.Na stránce se zobrazí odkazy s možnostmi, které umožňují provádět akce, které mohou problém vyřešit.
Obsah | Najít zdrojové soubory
Přidat cesty hledání zdrojového souboru do řešení
Můžete určit síť nebo místní adresáře pro hledání zdrojových souborů.
Vyberte řešení v Průzkumníku řešení a pak zvolte Vlastnosti z místní nabídky.
V části běžné vlastnosti uzel, zvolte Ladit zdrojové soubory.
Klikněte na složku ikonu.Zobrazuje upravitelný text v adresáře, který obsahuje zdrojový kód seznamu.
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.
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í |
---|
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
Ujistěte se, že jsou dodrženy bezpečnostní opatření popsané v předchozí části.
Na Nástroje nabídce zvolte Možnosti.
Možnosti se zobrazí dialogové okno.
V ladění uzel, zvolte Obecné.
Vyberte Povolit podporu serverové zdroje zaškrtávací políčko.
(Volitelné) Zvolte požadované podřízené možnosti.
Všimněte si, že oba Povolit zdrojový server pro částečným vztahem důvěryhodnosti sestavení (pouze spravován) a Spustit příkazy serveru nedůvěryhodných bez zobrazení výzvy vždy může zvýšit bezpečnostní rizika, které již bylo uvedeno výše.
Obsah | Najít zdrojové soubory
Viz také
Další zdroje
.NET vzdálené Symbol načítání změn ve Visual Studio 2012 a 2013