Archived

This topic is now archived and is closed to further replies.

BlackHC

StackWalk64

Recommended Posts

BlackHC    103
Hi, has someone any experience with the StackWalk64 function ( and the other DbgHelp functions) ? I get always an strange Access Violation from Ntdll.dll ... BlackHC I do know that I don''t know anything.

Share this post


Link to post
Share on other sites
LessBread    1415
I''ve worked with the 32 bit version before. Here are a few related urls:

http://www.microsoft.com/msj/0597/hood0597.htm
http://www.microsoft.com/msj/0299/bugslayer/bugslayer0299.htm
http://www.mvps.org/win32/misc/stackwalk.html
http://www.codeproject.com/useritems/leakfinder.asp
http://www.codeproject.com/cpp/exception.asp

There doesn''t appear to be much commentary regarding the 64 bit dbghelp routines.

Share this post


Link to post
Share on other sites
Jan Wassenberg    999
- Do you have the 5.1 dbghelp.dll? You''ll need it for DIA stuff; grab it from someone who has WinXP or try to download a ''MS debug pack'' or something.

- you synchronizing your calls to the library? It''s single threaded.

- read in one of Matt Pietrek''s articles that you need to set certain members of STACKFRAME:

  
/* x86 only: init STACKFRAME for first StackWalk call (undocumented) */
frame.AddrPC.Offset = context.Eip;
frame.AddrPC.Mode = AddrModeFlat;
frame.AddrStack.Offset = context.Esp;
frame.AddrStack.Mode = AddrModeFlat;
frame.AddrFrame.Offset = context.Ebp;
frame.AddrFrame.Mode = AddrModeFlat;


That''s it until you tell us your Windows version and where it''s crashing


Lessbread: there''s not much difference; in fact, on my system, the 32 bit routines point to the 64 bit versions.

500x3

Share this post


Link to post
Share on other sites
BlackHC    103
It's real strange how it crashes. Well, my trace function which uses StackWalk64 works well - 'til it returned - then I get an Access Violation from Ntdll.dll. My programm still doesn't crash because I do exception handling. If the programm continues, I get a lot of strange messages from heap, that some heap block has been modified past the requested size of 30.

Other question : Do I really need set up frame.AddrStack ?
In the doc just AddrPC and AddrFrame need to be set up.

Now I trying to get the WinXP symbols I downloaded working with my Visual C++ 6 ... :-~

Thx
BlackHC


I do know that I don't know anything.

EDIT:
I've located the error somewhere in the STL and somehow removed it by copying some function parts into others. Strange,strange,strange.

Thx for your help however.

[edited by - BlackHC on March 8, 2003 8:09:43 AM]

Share this post


Link to post
Share on other sites