Index: kdb_cli.c =================================================================== --- ntoskrnl/kdbg/kdb_cli.c (revision 71138) +++ ntoskrnl/kdbg/kdb_cli.c (working copy) @@ -1124,7 +1124,7 @@ /* Try printing the function at EIP */ if (!KdbSymPrintAddress((PVOID)KdbCurrentTrapFrame->Tf.Eip, &KdbCurrentTrapFrame->Tf)) - KdbpPrint("<%08x>\n", KdbCurrentTrapFrame->Tf.Eip); + KdbpPrint("%08x <%08x>\n", KdbCurrentTrapFrame->Tf.Ebp, KdbCurrentTrapFrame->Tf.Eip); else KdbpPrint("\n"); } @@ -1150,7 +1150,7 @@ /* Print the location of the call instruction */ if (!KdbSymPrintAddress((PVOID)(Address - 5), &TrapFrame)) - KdbpPrint("<%08x>\n", Address); + KdbpPrint("%08x <%08x>\n", Frame, Address); else KdbpPrint("\n"); @@ -1167,7 +1167,7 @@ Frame = TrapFrame.Ebp; if (!KdbSymPrintAddress((PVOID)Address, &TrapFrame)) - KdbpPrint("<%08x>\n", Address); + KdbpPrint("%08x <%08x>\n", Frame, Address); else KdbpPrint("\n"); } Index: kdb_symbols.c =================================================================== --- ntoskrnl/kdbg/kdb_symbols.c (revision 71138) +++ ntoskrnl/kdbg/kdb_symbols.c (working copy) @@ -156,6 +156,7 @@ CHAR FileName[256]; CHAR FunctionName[256]; CHAR ModuleNameAnsi[64]; + ULONG_PTR Ebp = 0; if (!KdbpSymbolsInitialized || !KdbpSymFindModule(Address, NULL, -1, &LdrEntry)) return FALSE; @@ -170,14 +171,15 @@ &LineNumber, FileName, FunctionName); + if (Context) Ebp = ((PKTRAP_FRAME)Context)->Ebp; if (NT_SUCCESS(Status)) { - DbgPrint("<%s:%x (%s:%d (%s))>", - ModuleNameAnsi, RelativeAddress, FileName, LineNumber, FunctionName); + DbgPrint("%08x <%s:%x (%s:%d (%s))>", + Ebp, ModuleNameAnsi, RelativeAddress, FileName, LineNumber, FunctionName); } else { - DbgPrint("<%s:%x>", ModuleNameAnsi, RelativeAddress); + DbgPrint("%08x <%s:%x>", Ebp, ModuleNameAnsi, RelativeAddress); } return TRUE;