VMware {code} Community
fixitchris
Hot Shot
Hot Shot

Using WinDbg symbol files

1. Install WinDbg inside the guest. You will need to generate symbol files from the guest since this is the Windows version you will be hooking vprobes to.

2. Create a local or remote symbol server per Debugging Applications for Microsoft .NET and Microsoft Windows Part I, Chapter 2 and run the following command from the WinDbg folder:

cscript ossyms2.0.js \\symbols\path

This will take some time to complete and you should end up with a couple gigs of modules and their PDBs.

3. Run WinDbg in local kernel debugging mode on the guest and issue the following command, replacing <modulename> with an actual module name:

x <modulename>!*

4. Save the output from WinDbg: Edit &gt; Write Window Text to File

5. Place the saved file in the guest datastore directory.

6. Stop the guest.

7. Edit the VMX file to include

vprobe.enable = "TRUE"
vprobe.guestSyms = "symbolFile.TXT"

8. Start the guest.

9. Issue the vprobeListProbes command to view your imported events.

The attached probes.txt file contains all my events with the NT module imported. nt.txt is the file I am importing with vprobe.guestSyms. I am not sure if this will be a problem but the event names look like:


GUEST:t!MiShutdownSystem*

instead of


GUEST:nt!MiShutdownSystem*

Any insight on this?

UPDATE FROM VMWARE:

This looks like an issue with our internal parsing logic for windbg-style symbol text files. Try adding a "0`" (w/o the double quotes) to each of the lines and you should see the full, intact probe names.

I will check this out and post my results...

0 Kudos
3 Replies
fixitchris
Hot Shot
Hot Shot

Modifying this:

808e5d9a nt!IopFreeDCB = <no type information>

to this:

0`808e5d9a nt!IopFreeDCB = <no type information>

does list the probe names correctly.

0 Kudos
guozilong
Contributor
Contributor

Hello! I am a studnet from China, and I do not know how to do the step three you said to use WinDbg sumbol files .Can you make it more clear please?

Thank you!

0 Kudos
fixitchris
Hot Shot
Hot Shot

Hi.

Install WinDbg on the guest. Then once you know which DLL you want the symbols for run WinDbg and type

x ntdll!*

into WinDbg (replacing ntdll with the dll you want the symbols for). Then copy and paste the output into a text file.

0 Kudos