views:

196

answers:

3

How would you explain "symbols" in a way that a novice programmer like myself would understand?

What are they? Are they some sort of mapping to functions?

I would like to learn more advanced debugging techniques and this term has been a roadblock for me.

+2  A: 

Try this: Debug Symbols

Naveen
+3  A: 

A possibly simpler MSVC++ 6 answer for a novice than the wikipedia article is as follows;

Symbols are links between an executable file being debugged and it's source, stored in a .PDB (symbolic information) file. If I am debugging an executable, or my EXE crashes and I end up in the debugger, and I have associated symbolic information, I will be able to view what's going on in terms of my C++ source code, assuming the source is available. If I don't have this information, I'll be shown x86 assembly / machine code.

For this reason, on test machines, it is often a good idea to supply the PDB and a debugger to the tester, as in the event of a crash, you'll be able to figure out why it happened. No PDB and debugger, and you'll have to recreate the crash on your development PC, which can be difficult.

Shane MacLaughlin
I see.. This is helpful.. So basically symbols are mappings of the machine instructions to the corresponding source code?.. Also, are PDB files microsoft only? Do other development environments have similar systems?
krebstar
So a PDB file could still be useful even if one dont have access to the source? Or is a source and IDE things you refer to as "a debugger"?
mizipzor
+1  A: 

Just so future searchers can have an easier time, I found some great resources on the topic..

krebstar