سؤال

I have a dump file which I managed to create, from my DLL which is created for any unhandled exception.

When I did something like int* tt = new int[4]; return int[n]; with n = 4, I would get the dump file, and could open it, and see at what line the error is caused. This was possible for both directly from a release exe, and a release DLL.

Now this was an easy error, and I only entered it to test my memory dump creation.

I now have a 900kb dump file, and the event log says the error comes from my .DLL, yet if I open the file, it does not display any source code.

The call stack is

KERNELBASE.dll!RaiseException() + 0x3d bytes
clr.dll!RaiseTheExceptionInternalOnly() + 0x18f bytes
clr.dll!IL_Throw() + 0xe2 bytes
000007fe81f65fd7()
00000000034d1610()
000000002d06ecb8()
436f93ce00050011()
436f93cf00110012()
000000002d06ec50()
00006d930c4f7680()
clr.dll!InlinedCallFrame::`vftable'()
000000002d06f3d8()

which does not help me at all to figure out where in the DLL my error is coming from. Another issue with debugging this is, it only happens on a live-PC, but never on my debugging system. Can anyone help me finding a way how to debug this? It seems to happen on the calling of the DLL, but: not every time, only like every 2nd time (sometimes on 1st try, sometimes on 5th). I am completely lost on what is happening here.

Edit: Updated the call stack with the Microsoft symbols loaded, but I still do not know where this may be coming from.

هل كانت مفيدة؟

المحلول

You need to load the symbols for kernelbase.dll. And possibly clr.dll.

Presumably you are using visual studio? Set it up to access symbols from the microsoft symbol server: http://msdn.microsoft.com/en-us/library/b8ttk8zy(v=vs.80).aspx

You may need to right click on items in the callstack and tell it to load symbols.

Additionally be sure to keep a copy of the pdb file for any releases of software you make.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top