PDB and exceptioninfo - how to not get ?'s?

Problems compiling? Don't understand the source code? Don't know how to code your feature? Post here.

Moderator: Moderators

Locked
GargoyleMT
DC++ Contributor
Posts: 3212
Joined: 2003-01-07 21:46
Location: .pa.us

PDB and exceptioninfo - how to not get ?'s?

Post by GargoyleMT » 2003-03-14 21:12

I am having very bad luck in generating useful exceptioninfo.txt logs on my local branch of DC++. Regardless, they have the typical: "DCPlusPlus!0x0053253E : ?" lines. I haven't messed with the compilation switches, except to add winmm.lib to the additional dependencies of the DCPlusPlus project. Obviously I can always fire up VS.Net's debugger when I get an exception, but good exceptionlog.txt's is a loose end I want to tie up.

Any suggestions?

Phantom
Posts: 72
Joined: 2003-01-11 20:13
Location: New Zealand

Post by Phantom » 2003-03-16 18:05

I have the same (or similar) problem. I've been playing around with some modifications and have generated the .pdb files. I've given it to my flatmates to test it out, but 2 of them, when it crashes seem to have ?'s yet if it crashes on my box, or my other flatmates box, it has all the details there. Am I doing something wrong? Is there a particular way to use these .pdb files? Do you need something installed. I haven't been able to find and similarities or differences on installed software on the other machines that obviously point to this.

GargoyleMT
DC++ Contributor
Posts: 3212
Joined: 2003-01-07 21:46
Location: .pa.us

Post by GargoyleMT » 2003-03-22 10:49

Hey phantom, are those people using Windows 2000?

My system won't generate valid exceptioninfo.txt files even with a precompiled DC++ binary, from sourceforge. I'm running Win2k SP3. My other 2k box (SP3 as well) won't generate them either. My XP laptop, on the other hand, generates a valid exceptioninfo.txt perfectly with the same binary. (I tested with 0.232 and the Finished Downloads bug ;-)).

The code is derived from the Extended Trace stuff at Code Project. Maybe there are some gotchas with specific versions of Windows.

(I'm tired of having to close bugs because they don't have a good exceptioninfo.txt attached)

sandos
Posts: 186
Joined: 2003-01-05 10:16
Contact:

Post by sandos » 2003-03-22 11:04

Im also seeing this, but in my case it might be because I always rename the .exe to DCPlusPlus-<version>.exe even though Arne said it shouldnt matter. Also on 2k.

GargoyleMT
DC++ Contributor
Posts: 3212
Joined: 2003-01-07 21:46
Location: .pa.us

Post by GargoyleMT » 2003-03-22 22:34

On digging a little further, it looks like the SymGetSymFromAddr() function is returning 487 (which is "Attempt to access invalid address"). I googled around a bit, and it looks like it has to do with versions of imagehlp.dll and debughlp.dll. My Win 2000 SP3 install has versions 5.0.2195.5242 installed. Windows 2000 SP2 apparently had 5.0.2195.2104 (and .2778) installed. I was not able to create a good exceptioninfo.txt with either version of DLLs.

But anyway, Visual Studio .NET has 5.1.2600, but doesn't install that version to your system32 directory. 5.1.2600 is standard on XP, which explains why XP error logs are never screwed up. When I replaced the imagehlp.dll / dbghelp.dll files with version 5.1.2600, it worked perfectly.

Now, I don't know where this gets us.

Getting every 2000 user (and before) to replace two DLLs, one of which is in use (IMAGEHLP) with two versions from XP is not really possible.

Someone else want to do a little legwork on this?

GargoyleMT
DC++ Contributor
Posts: 3212
Joined: 2003-01-07 21:46
Location: .pa.us

Post by GargoyleMT » 2003-03-22 23:46

A good fix is that we could change the release version of DCPlusPlus to link against dbghelp.dll (instead of imagehlp.dll) and then redistribute the dbghelp.dll file (which is redistributable according to microsoft).

A change or two needs to be made to the ExtendedTrace.cpp/h files, but other than that, it works for me, and it's the solution I'll be using until someone shows me a better way.

Moch
Posts: 71
Joined: 2003-03-21 22:29

Post by Moch » 2003-04-02 14:45

GargoyleMT

The problem is that VS doesn't have a comprable dll of that same version that has the DEBUG Symbols loaded into it. To use the same versions and get debug info you have to find those DLL's with DEBUG symbols generated for it.......(I hope I am making since, its been a while since I programmed in Windows NT)

If you do a search at Microsofts support site you should be able to find downloads for dll's w/Debug Symbols.

~Moch

GargoyleMT
DC++ Contributor
Posts: 3212
Joined: 2003-01-07 21:46
Location: .pa.us

Post by GargoyleMT » 2003-04-02 18:51

dbghelp.dll is the DLL that parses the PDB file. I wasn't talking about DLLs with debugging symbols in them.

Locked