DetailPage-MSS-KB

Microsoft Knowledge Base

Identificativo articolo: 121366 - Ultima modifica: venerdì 5 agosto 2005 - Revisione: 3.1

 

In questa pagina

Sommario

L'estensione PDB è l'acronimo "database di programma". Contiene il nuovo formato per archiviare le informazioni di debug che è stato introdotto in Visual c ++ versione 1.0. In futuro, il file PDB conterrà anche altre informazioni di stato del progetto. Uno delle motivazioni principali per la modifica del formato è per consentire il collegamento incrementale di versioni di debug di programmi, una modifica introdotto in Visual c ++ versione 2.0.

L'estensione DBG l'acronimo di "debug". I file DBG creati con il set di strumenti NT a 32 bit sono in formato file Portable eseguibile (PE). Contengono sezioni COFF, FPO e alcune informazioni di CodeView casi. File di DBG in questo formato del debugger di Visual c ++ integrato possono essere letti ma ignora le sezioni di simboli COFF e consente di cercare informazioni di CodeView.

Se è necessario determinare quali informazioni sui simboli è contenuti in un file DBG, è possibile digitare quanto segue al prompt dei comandi:
Dumpbin sample.dbg/symbol.
				
Nota potrebbe essere necessario il percorso di directory di inclusione per Dumpbin.exe e MSdis100.dll:
Path=%Path%;C:\Program Files\DevStudio\VC\bin;C:\Msssdk\bin
				
Per ulteriori informazioni su DUMPBIN, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito riportato:
177429  (http://support.microsoft.com/kb/177429/ ) Esempi di output DUMPBIN

Informazioni

I file PDB

Sebbene versioni precedenti a 16 bit di Visual c ++ utilizzare file PDB, le informazioni di debug memorizzate in essi è stato aggiunto alla fine del file exe o dll dal linker. Nelle versioni di Visual c ++ precedenti, sia il linker e il debugger integrato sono state modificate per consentire file PDB da utilizzare direttamente durante il processo di debug, eliminando così notevoli quantità di lavoro per il linker e inoltre ignorare il limite di CVPACK\0 complesso di tipi di 64 KB.

Per ulteriori informazioni sulle limitazioni di CVPACK\0, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito riportato:
112335  (http://support.microsoft.com/kb/112335/ ) BUG: CK1020 o CK4009 durante il tipo di informazioni superano 64 KB
<project>Per impostazione predefinita, quando si generano progetti generati da Visual Workbench, il /Fd opzione del compilatore viene utilizzato per rinominare il file PDB PDB <progetto>. Di conseguenza, sarà necessario un solo file PDB per l'intero progetto.

Quando si eseguono un makefile che non sono stati generati da Visual Workbench e il /Fd non viene utilizzato con/Zi, finirà due file PDB:
  • VCx0.PDB (dove "x" si riferisce alla versione principale di corrispondente Visual c ++, "2"o "4"), che memorizza tutte le informazioni per i singoli file obj di debug. Si trova nella directory in cui risiede il makefile del progetto.
  • <project><progetto> PDB, in cui sono memorizzate tutte le informazioni di debug per il file exe risultante. Si trova nella sottodirectory \WINDEBUG.
Perché due file? <project>Quando viene eseguito il compilatore, non conosce il nome del file exe in cui saranno collegati i file obj, in modo che il compilatore non è possibile inserire le informazioni in <progetto> PDB. I due file di memorizzare informazioni diverse. Ogni volta che si compila un file obj, il compilatore unisce le informazioni di debug in VCX0.PDB. Non inserire nelle informazioni di simbolo, ad esempio le definizioni di funzione. Inserisce solo in informazioni riguardanti i tipi. Uno dei vantaggi di questo è che quando ciascun file di origine include file di intestazione comuni, ad esempio <windows.h>, tutti i typedef da tali intestazioni vengono memorizzate solo una volta, anziché in ciascun file obj.

<project>Quando si esegue il linker, crea <progetto> PDB, che contiene le informazioni di debug per il file exe del progetto. <project>Tutte le informazioni di debug, compresi prototipi di funzione e tutto il resto, viene inserite in <progetto> PDB, non solo le informazioni di tipo presenti in VCX0.PDB. I due tipi di file PDB condividere la stessa estensione, in quanto sono simili dal punto di vista dell'architettura consentono entrambi gli aggiornamenti incrementali. Tuttavia, archiviano effettivamente informazioni diverse.

<project>Il nuovo debugger di Visual c ++ utilizza il file PDB di <progetto> creato dal linker direttamente e incorpora il percorso assoluto per il PDB nel file exe o dll. Se il debugger non è possibile trovare il file PDB, tale posizione o il percorso non è valido (Se, ad esempio, il progetto è stato spostato in un altro computer), il debugger cerca nella directory corrente.

I file DBG

Il debugger di Visual c ++ integrato possibile utilizzare i file DBG, purché vengono eseguite da un formato CodeView contenente binario output di debug. Questi sono utili per il debug quando il codice sorgente non è disponibile. Anche senza l'origine, i file DBG consentono di impostare i punti di interruzione su funzioni, controllare le variabili e vedere le funzioni nello stack di chiamate. Sono inoltre necessari per il debug OLE RPC.

Deve essere evidenziato un'avvertenza: quando lavora con i simboli da un file DBG, è necessario utilizzare i nomi decorati completamente. Ad esempio, per impostare un punto di interruzione in una chiamata alla funzione sndPlaySound, è necessario specificare _sndPlaySoundA@8 come percorso.

Non esistono effettivamente due DBG formati di file. Il vecchio formato è disponibile per un periodo di tempo in tutto il mondo a 16 bit. Ad esempio, poiché il formato di file COM è un'immagine binaria semplice caricata in memoria, le informazioni di debug di CodeView potrebbe non essere aggiunto alla fine del file perché la dimensione del file potrebbe essere supera il limite di 64 KB di un file com. Pertanto le informazioni sui simboli invece è state collocate in un file DBG separato, che disponeva solo le informazioni di CodeView in essa contenuti. I file DBG potrebbero essere generati anche eseguendo un file exe utilizzando l'opzione /strip CVPACK\0.

Per .EXEs a 32 bit, Visual c ++ versione 2.x e 4.x gestore simbolo del debugger non legge il vecchio formato. Invece viene letto il formato utilizzato nei file DBG di Windows NT, fornito per l'utilizzo con i file DLL di sistema. Questi file DBG sono nel formato di file Portable eseguibile (PE) e contengono sezioni COFF, FPO e di alcune informazioni sui simboli CodeView di casi. Il debugger di Visual c ++ nuovo legge file DBG solo questo formato. Inoltre, solo utilizza le informazioni CodeView, ignorando le altre sezioni simbolo.

È possibile rimuovere le informazioni di debug da un file PE e memorizzarlo in un file DBG per l'utilizzo dal debugger. A questo scopo, il debugger deve conoscere se trovare le informazioni di debug in un file separato o non e se le informazioni sono state rimosse dal file o non. È un metodo per il debugger cercare il file eseguibile cercando le informazioni di debug. Tuttavia, per salvare il debugger di dover cercare nel file di un campo di caratteristiche del file (IMAGE_FILE_DEBUG_STRIPPED) è stato inventato che indica che il file è state rimosse. Eseguire la ricerca i debugger di questo campo nell'intestazione del file PE per determinare rapidamente se le informazioni di debug sono presente nel file.

Per generare un file DBG in questo formato, è possibile utilizzare REBASE.exe, fornito con Win32 SDK. Consultare la documentazione di SDK per ulteriori informazioni.

Durante le generazioni di vendita al dettaglio di Windows, i simboli di debug è in sono di rimosse dal file binari di sistema e i driver e di memorizzati in file DBG separati. Ciò avviene perché il debugger del kernel di Windows è possibile utilizzare questi file DBG e fornire i simboli di debug anche per i driver ottimizzati. È tuttavia importante ricordare che il debugger di Visual c ++ integrato non è stato progettato per eseguire il debug modalità protetta del kernel codice.

I file di simboli di Windows NT sono reperibili in una sottodirectory di debug della directory \Support il finale di Windows CD. Questi file devono essere copiati dal CD sul disco rigido. Per utente sul computer del debugger di destinazione il debug in modalità, i simboli DBG devono trovarsi nella directory Windows NT \<winnt>\SYMBOLS del sistema di destinazione (<winnt> è la directory in cui è installato Windows NT). Il programma di installazione di Visual c ++ nuovo installa un'icona di "Installazione di simboli del sistema di NT" nel gruppo di programmi. Utilizzarlo per copiare automaticamente i file DBG dal CD di Windows NT Workstation disco struttura di directory corretta sul disco rigido. Questo metodo non funziona per il CD di Windows NT Server 4.0 poiché i file DBG vengono memorizzati in formato compresso.

Per il debug del kernel, è necessario posizionare i file DBG in una struttura simboli sotto la directory specificata dalla variabile di ambiente _NT_SYMBOL_PATH (ad esempio, C:\DEBUG\SYMBOLS). Il debug del kernel è possibile con un numero minimo di simboli costituita da di simboli per tutti i driver (*.SYS) nella directory SYMBOLS\SYS e simboli per Ntoskrnl.exe e HAL.dll nelle directory SYMBOLS\EXE e SYMBOLS\DLL, rispettivamente. Per ulteriori informazioni sul debug del kernel, vedere la discussione riguardanti il debug del kernel nel manuale del programmatore di DDK di Windows NT.

Sebbene sia teoricamente possibile convertire da un file PDB in un file DBG, non è un compito. In questa fase, sappiamo di non tale strumento. Se si sente di tale strumento, in questo articolo della Microsoft Knowledge Base riportato di seguito non verrà aggiornato.

Le informazioni in questo articolo si applicano a:
  • Microsoft Visual C++ 2.0 Professional Edition
  • Microsoft Visual C++ 2.1
  • Microsoft Visual C++ 4.0 Standard Edition
  • Microsoft Visual C++ 6.0 Service Pack 5
  • Microsoft Visual C++ 5.0 Standard Edition
  • Microsoft Visual C++ 6.1
Chiavi: 
kbmt kbbug kbdebug kbide kbinfo KB121366 KbMtit
Traduzione automatica articoliTraduzione automatica articoli
Il presente articolo è stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell’utente. Tuttavia, un articolo tradotto in modo automatico non è sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, più o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non è la sua. Microsoft non è responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell’utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.
Clicca qui per visualizzare la versione originale in inglese dell’articolo: 121366  (http://support.microsoft.com/kb/121366/en-us/ )
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.
Articolo KB ritiratoDichiarazione di non responsabilità per articoli della Microsoft Knowledge Base su prodotti non più supportati
Questo articolo è stato scritto sui prodotti per cui Microsoft non offre più supporto. L’articolo, quindi, viene offerto ‘così come è’ e non verrà più aggiornato.
Condividi
Altre opzioni per il supporto
Forum del supporto di Microsoft Community
Contattaci direttamente
Ricerca di un partner certificato Microsoft
Microsoft Store