rainers / cv2pdb

converter of DMD CodeView/DWARF debug information to PDB files
Artistic License 2.0
466 stars 110 forks source link

Invalid entrys in generated pdb #55

Closed nevilad closed 5 years ago

nevilad commented 5 years ago

I've generated a pdb from an exe with debugging info and try to debug it with windbg, but no locals are shown. Running cvdump on this pdb shows a lot errors, examples are: Error on OpenTpi: 'Invalid file format' (11) list[31] = LF_MEMBER, none, type = 0x116E, offset = Invalid Numeric Leaf Size = Invalid Numeric Leaf, class name = TCGContext, UDT(0x0000137d) qemu-system-i386_orig.zip

rainers commented 5 years ago

happened for aggregates larger than 32kB. Fix is committed.

nevilad commented 5 years ago

The Error on OpenTpi: 'Invalid file format' (11) is still there, other invalid entrys are gone.

rainers commented 5 years ago

I don't see that error. Do you use this version of cvdump? https://github.com/Microsoft/microsoft-pdb/tree/master/cvdump

nevilad commented 5 years ago

Yes, this version. Running it and watching loaded dlls does not show mspdb or other specific system dlls. I will try it on a different machine. Or the problem is in the build process, I'm building the project in VS2017.

nevilad commented 5 years ago

The error is on a host with mspdb80, using mspdb14 generates correct pdbs. I tried to run cv2pdb on a host with windbg installed and got "PDB helper not found error". Searching by name didn't find mspdb dlls on this host, so these are not installed with windbg. Is it possible to move mspdb dlls on a different host? When not, users should install the latest versions of VS to use cv2pdb.

rainers commented 5 years ago

The error is on a host with mspdb80,

Thanks for figuring this out. That is a pretty old version, not sure it's worth digging into that.

Is it possible to move mspdb dlls on a different host?

I think it is, though I haven't tried in a while. There are a couple of additional files needed but that also depends on the version (e.g. mspdbsrv.exe, msobj*.dll IIRC).

nevilad commented 5 years ago

I've copied msobj140.dll, mspdb140.dll,mspdbcore.dll, mspdbsrv.exe and vcruntime140.dll from the host with VS17 to a host with VS2008 Express, ran cv2pdb and it used mspdb140, so there is a solution to make cv2pdb portable.

gwald commented 3 months ago

VS 2019 needed tbbmalloc.dll but also worked.