Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Static library debug symbols

In VS2010 there is an option to generate debug info for exes/dlls under linker but no such option under librarian for libs. Is the debug info embedded in the static library?

There is an option in the C/C++ properties for Program Database File Name for libs, exes, and dlls. By default it goes into my intermediate directory and is named the project name for libs, but is named vc$(PlatformToolsetVersion).pdb for exes/dlls. What's the pdb from this option and how does it differ from the pdb in the linker option?

If I am supplying a library with libs and headers how do I supply debug symbols to a user of my library?

like image 425
David Avatar asked Sep 27 '11 20:09

David


People also ask

Do static libraries have symbols?

At link time, a static library can have unresolved symbols in it, as long as you don't need the unresolved symbols, and you don't need any symbol that is in a .o file that contains an unresolved symbol.

What is debug symbols in IOS?

Debug Symbols are additional information about your source code that are used to help debugging. See also this wikipedia article about debug symbols. They will not be submitted to the appstore as they are only part of debug-build while you only submit a release-build to the appstore.

How can I tell if an executable has debug symbols?

To check if there's debug info inside the kernel object, you can add the following at the end of the objdump command: | grep debug . If this string is found, you know the kernel object contains debug information. If not, then it's a "clean" kernel object.


1 Answers

If you use /ZI or /Zi (C/C++ -> General -> Debug Information Format), then the vc$(PlatformToolsetVersion).pdb is created, which contains the debug info for all of the .obj files created. If alternately you use /Z7, the debug info will be embedded into the .obj file, and then embedded into the .lib. This is probably the easiest way to distribute the debug info for a static library.

I wouldn't advise distributing a static library, however, since it's generally tied to a specific version of the compiler.

like image 158
mloar Avatar answered Oct 16 '22 09:10

mloar