VxD linked by MS link 7.x and NMSYM

Hello all!

Does somebody know how to build a VxD with MS linker 7.x and be able
to translate its debugging information using NMSYM?

VxDs build by MS linker prior to 7.0 are fully compatible with NMSYM.
I always build a full debug info in PDB and have all my symbol
information (not only lines/exports) visible in SoftICE 4.2.7.

But if a VxD is built using MS linker 7.0 or 7.1 then NMSYM refuses to
translate; it says “Invalid executable”. Both NMSYM 1.24 and 4.3.1
(from DriverStudio 3.1) are unable to translate debug info.

I’ve used DUMPBIN to compare headers of VxDs produced by MS linker
6.0, 7.0 and 7.1. There are no differences in versions, magic numbers
etc.; there are only slight differences in section sizes.

Maybe I need to specify some additional link options to get a valid
VxD image?

Regards,
Eugene

I had this problem about 2 years before and after discussion with Compuware tech support the conclusion was it is MS fault. MsDia.dll which supports VC7 symbols doesn’t support VxDs.

There are two solutions:

  • generate MAP file and convert MAP -> SYM -> NMS. For limited info only.
  • use undocumented VC7 switches to generate VC6-like symbols: /Zvc6 /debugtype:vc6

The second worked well for me but it is fortunately more than year I debugged the last VxD and I don’t know if current DDK compiler still supports it. Try it and let us know.

Best regards,

Michal Vodicka
UPEK, Inc.
[xxxxx@upek.com, http://www.upek.com]


From: xxxxx@lists.osr.com[SMTP:xxxxx@lists.osr.com] on behalf of Eugene Muzychenko[SMTP:xxxxx@muzychenko.net]
Reply To: Windows System Software Devs Interest List
Sent: Thursday, February 10, 2005 6:32 AM
To: Windows System Software Devs Interest List
Subject: [ntdev] VxD linked by MS link 7.x and NMSYM

Hello all!

Does somebody know how to build a VxD with MS linker 7.x and be able
to translate its debugging information using NMSYM?

VxDs build by MS linker prior to 7.0 are fully compatible with NMSYM.
I always build a full debug info in PDB and have all my symbol
information (not only lines/exports) visible in SoftICE 4.2.7.

But if a VxD is built using MS linker 7.0 or 7.1 then NMSYM refuses to
translate; it says “Invalid executable”. Both NMSYM 1.24 and 4.3.1
(from DriverStudio 3.1) are unable to translate debug info.

I’ve used DUMPBIN to compare headers of VxDs produced by MS linker
6.0, 7.0 and 7.1. There are no differences in versions, magic numbers
etc.; there are only slight differences in section sizes.

Maybe I need to specify some additional link options to get a valid
VxD image?

Regards,
Eugene


Questions? First check the Kernel Driver FAQ at http://www.osronline.com/article.cfm?id=256

You are currently subscribed to ntdev as: xxxxx@upek.com
To unsubscribe send a blank email to xxxxx@lists.osr.com

For what it is worth: The XP SP1 DDK (2600.1106) compiler & linker tools
still seem to support the /Zvc6 & /debugtype:vc6 flags. I use them to build
VXDs and associated NMS files with predictable success. As for later DDK
compiler / linker versions, I don’t know. Since the later DDK’s have
dropped the WinME VXD environment and headers, I have not tried.

Good Luck,
Dave Cattley
Consulting Engineer
Systems Software Development