Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Strip the path to the pdb

Per default, when compiling a Visual Studio project in release mode, the complete path to the pdb is put into the image file, e.g.:

c:\myprojects\demo\release\test.pdb

Using an undocumented linker switch (/pdbpath:none) one can force Visual Studio 2008 to reduce the full qualified name of the pdb, e.g:

test.pdb

I need to do the same with a project which is still built using VC6.

I tried the "/pdbpath:none" switch at the project settings level, but the linker complains about this unknown switch.

Does anyone knows a method (or a tool) to accomplish this either when linking a VC6 project or afterwards directly at the image level?

like image 305
mox Avatar asked Sep 29 '11 11:09

mox


2 Answers

Your best bet is to use pdbstr.exe from MS directly. It allows for direct extraction, update, and misc other functions directly, independent of compiler version (up to the last supported version, which I think is VS2013 right now). We use it to add SVN linkings directly to PDBs which we then store in local symbol stores using srctool.

like image 187
Woody14619 Avatar answered Oct 16 '22 05:10

Woody14619


For newer link.exe versions, the syntax changed.

The option you want is now /pdbaltpath:%_PDB%

It is documented on MSDN: https://msdn.microsoft.com/en-us/library/dd998269.aspx

%_PDB% expands to the file name of the actual .pdb file without any path information

For VC6, you might want to continue using the same compilers but a new version of link.exe.

The Windows Driver Kits also come with a tool named binplace.exe which can modify this information post-build.

like image 30
Ben Voigt Avatar answered Oct 16 '22 04:10

Ben Voigt