Amit
Amit

Reputation: 1057

What is the usage of pdb's (Program DataBase)?

When compiling a library or an application (e.g a Console Application in the Visual Studio IDE), in the Debug folder of the application, apart from the .dll or .exe, there will be one more file with extension ".pdb".

What is the exact usage of this .pdb file?

Upvotes: 28

Views: 29311

Answers (6)

ChrisF
ChrisF

Reputation: 137108

Well you've given yourself a big clue in your title.

It's the file Visual Studio needs to be able to debug your application.

This MSDN page has more information.

A program database (PDB) file holds debugging and project state information that allows incremental linking of a Debug configuration of your program.

Upvotes: 1

Richard Berg
Richard Berg

Reputation: 20784

John Robbins has written some really great articles on PDBs lately:

Update: Except for the first link, the links are broken (Wintellect was acquired).

Upvotes: 10

gbjbaanb
gbjbaanb

Reputation: 52659

PDBs contain debugging symbols, so you can ship a compiled binary to your customer without exposing your source code algorithms and other private details to them.

If your app goes wrong on a customer site, you can get a crash dump from them (using DrWatson), bring it back to your dev workstation and debug the crash, the debugger will use the symbols file in conjunction with the crash to show you the source code, data structures etc. In many cases, all you have to do is open the crash dump and the debugger will take you directly to the source code of the exception, and show you variables and threads too.

That's the primary use of them, they're invaluable when a customer reports a crash. The things you need to know about using them though - they are only valid for the build that created them, so if you recompile, your symbols file is next to worthless.

John Robbins has an excellent article why you would use them.

Upvotes: 37

Mez
Mez

Reputation: 2857

PDB's are useful when you want to do remote debugging as well.
Keeping the PDB's together with your installed application makes it possible to hook up visual studio remotely to the client's production environment and debug the application when necessary.

Upvotes: 2

Botz3000
Botz3000

Reputation: 39600

As far as i know, they contain debugging information, such as line numbers, variable names, etc.

Upvotes: 1

Kris Erickson
Kris Erickson

Reputation: 33834

PDB's allow debugging of applications, for examlple when they crash or if you have a minidump. They also allow you to find more detail about errors when outputting exceptions to logging (they will give a more complete stacktrace with line numbers rather than just showing the name of the function where the error occurred).

Upvotes: 2

Related Questions