|
|
1.1 ! root 1: /* Copyright (c) 1982 Regents of the University of California */ ! 2: ! 3: static char sccsid[] = "@(#)wheredump.c 1.2 2/11/82"; ! 4: ! 5: /* ! 6: * Print a list of currently active blocks starting with most recent. ! 7: */ ! 8: ! 9: #include "defs.h" ! 10: #include "runtime.h" ! 11: #include "frame.rep" ! 12: #include "sym.h" ! 13: #include "machine.h" ! 14: #include "object.h" ! 15: #include "mappings.h" ! 16: ! 17: where() ! 18: { ! 19: FRAME *frp; ! 20: ADDRESS prevpc; ! 21: LINENO line; ! 22: SYM *f; ! 23: ! 24: if (pc == 0) { ! 25: error("program is not active"); ! 26: } ! 27: prevpc = pc; ! 28: for (frp = curframe(); frp != NIL; frp = nextframe(frp)) { ! 29: f = whatblock(entry(frp)); ! 30: line = srcline(prevpc); ! 31: printf("%s", name(f)); ! 32: printparams(f, frp); ! 33: printf(", "); ! 34: printwhere(line, srcfilename(prevpc)); ! 35: printf("\n"); ! 36: prevpc = frp->save_pc; ! 37: } ! 38: line = srcline(prevpc); ! 39: printf("%s, ", name(program)); ! 40: printwhere(line, srcfilename(prevpc)); ! 41: printf("\n"); ! 42: } ! 43: ! 44: /* ! 45: * Dump the world to the given file. ! 46: * Like "where", but variables are dumped also. ! 47: */ ! 48: ! 49: dump() ! 50: { ! 51: FRAME *frp; ! 52: ADDRESS prevpc; ! 53: LINENO line; ! 54: SYM *f; ! 55: ! 56: if (pc == 0) { ! 57: error("program is not active"); ! 58: } ! 59: prevpc = pc; ! 60: for (frp = curframe(); frp != NIL; frp = nextframe(frp)) { ! 61: f = whatblock(entry(frp)); ! 62: line = srcline(prevpc); ! 63: printf("%s", name(f)); ! 64: printparams(f, frp); ! 65: printf(", "); ! 66: printwhere(line, srcfilename(prevpc)); ! 67: printf("\n"); ! 68: dumpvars(f, frp); ! 69: putchar('\n'); ! 70: prevpc = frp->save_pc; ! 71: } ! 72: line = srcline(prevpc); ! 73: printf("%s, ", name(program)); ! 74: printwhere(line, srcfilename(prevpc)); ! 75: printf("\n"); ! 76: dumpvars(program, NIL); ! 77: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.