Re-use (better) stack backtrace function
Modified: trunk/reactos/ntoskrnl/ke/i386/exp.c
_____
Modified: trunk/reactos/ntoskrnl/ke/i386/exp.c
--- trunk/reactos/ntoskrnl/ke/i386/exp.c 2005-02-05 10:54:00 UTC
(rev 13422)
+++ trunk/reactos/ntoskrnl/ke/i386/exp.c 2005-02-05 18:49:43 UTC
(rev 13423)
@@ -1,5 +1,4 @@
-/* $Id:$
- *
+/*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS kernel
* FILE: ntoskrnl/ke/i386/exp.c
@@ -393,9 +392,7 @@
KiDumpTrapFrame(PKTRAP_FRAME Tf, ULONG Parameter1, ULONG Parameter2)
{
ULONG cr3_;
- ULONG i;
ULONG StackLimit;
- PULONG Frame;
ULONG Esp0;
ULONG ExceptionNr = (ULONG)Tf->DebugArgMark;
ULONG cr2 = (ULONG)Tf->DebugPointer;
@@ -462,46 +459,7 @@
/*
* Dump the stack frames
*/
- DbgPrint("Frames: ");
- /* Change to an #if 0 if no frames are printed because of fpo. */
-#if 1
- i = 1;
- Frame = (PULONG)Tf->Ebp;
- while (Frame != NULL)
- {
- NTSTATUS Status;
- PVOID Eip;
- Status = MmSafeCopyFromUser(&Eip, Frame + 1, sizeof(Eip));
- if (!NT_SUCCESS(Status))
- {
- DbgPrint("<INVALID>");
- break;
- }
- if (!KeRosPrintAddress(Eip))
- {
- DbgPrint("<%X>", Eip);
- }
- Status = MmSafeCopyFromUser(&Frame, Frame, sizeof(Frame));
- if (!NT_SUCCESS(Status))
- {
- break;
- }
- i++;
- DbgPrint(" ");
- }
-#else
- i = 1;
- Frame = (PULONG)((ULONG_PTR)Esp0 + KTRAP_FRAME_EFLAGS);
- while (Frame < (PULONG)PsGetCurrentThread()->Tcb.StackBase && i <
50)
- {
- ULONG Address = *Frame;
- if (KeRosPrintAddress((PVOID)Address))
- {
- i++;
- }
- Frame++;
- }
-#endif
+ KeDumpStackFrames((PULONG)Tf->Ebp);
}
ULONG
@@ -616,7 +574,7 @@
ULONG ResultLength = sizeof(mbi);
NTSTATUS Status;
- DbgPrint("Frames: ");
+ DbgPrint("Frames:\n");
_SEH_TRY
{
Status = MiQueryVirtualMemory (