1*48095Sbostic /*- 2*48095Sbostic * Copyright (c) 1980 The Regents of the University of California. 3*48095Sbostic * All rights reserved. 4*48095Sbostic * 5*48095Sbostic * %sccs.include.redist.c% 622521Sdist */ 75519Slinton 822521Sdist #ifndef lint 9*48095Sbostic static char sccsid[] = "@(#)wheredump.c 5.2 (Berkeley) 04/16/91"; 10*48095Sbostic #endif /* not lint */ 115519Slinton 125519Slinton /* 135519Slinton * Print a list of currently active blocks starting with most recent. 145519Slinton */ 155519Slinton 165519Slinton #include "defs.h" 175519Slinton #include "runtime.h" 185519Slinton #include "frame.rep" 195519Slinton #include "sym.h" 205519Slinton #include "machine.h" 215519Slinton #include "object.h" 225519Slinton #include "mappings.h" 235519Slinton 245519Slinton where() 255519Slinton { 265763Slinton FRAME *frp; 275763Slinton ADDRESS prevpc; 285763Slinton LINENO line; 295763Slinton SYM *f; 305519Slinton 315763Slinton if (pc == 0) { 325763Slinton error("program is not active"); 335763Slinton } 345763Slinton prevpc = pc; 355763Slinton for (frp = curframe(); frp != NIL; frp = nextframe(frp)) { 365763Slinton f = whatblock(entry(frp)); 375519Slinton line = srcline(prevpc); 385763Slinton printf("%s", name(f)); 395763Slinton printparams(f, frp); 405763Slinton printf(", "); 415763Slinton printwhere(line, srcfilename(prevpc)); 425763Slinton printf("\n"); 435763Slinton prevpc = frp->save_pc; 445763Slinton } 455763Slinton line = srcline(prevpc); 465763Slinton printf("%s, ", name(program)); 475763Slinton printwhere(line, srcfilename(prevpc)); 485763Slinton printf("\n"); 495519Slinton } 505519Slinton 515519Slinton /* 525519Slinton * Dump the world to the given file. 535519Slinton * Like "where", but variables are dumped also. 545519Slinton */ 555519Slinton 565519Slinton dump() 575519Slinton { 585763Slinton FRAME *frp; 595763Slinton ADDRESS prevpc; 605763Slinton LINENO line; 615763Slinton SYM *f; 625519Slinton 635763Slinton if (pc == 0) { 645763Slinton error("program is not active"); 655763Slinton } 665763Slinton prevpc = pc; 675763Slinton for (frp = curframe(); frp != NIL; frp = nextframe(frp)) { 685763Slinton f = whatblock(entry(frp)); 695519Slinton line = srcline(prevpc); 705763Slinton printf("%s", name(f)); 715763Slinton printparams(f, frp); 725763Slinton printf(", "); 735763Slinton printwhere(line, srcfilename(prevpc)); 745763Slinton printf("\n"); 755763Slinton dumpvars(f, frp); 765763Slinton putchar('\n'); 775763Slinton prevpc = frp->save_pc; 785763Slinton } 795763Slinton line = srcline(prevpc); 805763Slinton printf("%s, ", name(program)); 815763Slinton printwhere(line, srcfilename(prevpc)); 825763Slinton printf("\n"); 835763Slinton dumpvars(program, NIL); 845519Slinton } 85