1*22521Sdist /* 2*22521Sdist * Copyright (c) 1980 Regents of the University of California. 3*22521Sdist * All rights reserved. The Berkeley software License Agreement 4*22521Sdist * specifies the terms and conditions for redistribution. 5*22521Sdist */ 65519Slinton 7*22521Sdist #ifndef lint 8*22521Sdist static char sccsid[] = "@(#)wheredump.c 5.1 (Berkeley) 06/06/85"; 9*22521Sdist #endif not lint 105519Slinton 115519Slinton /* 125519Slinton * Print a list of currently active blocks starting with most recent. 135519Slinton */ 145519Slinton 155519Slinton #include "defs.h" 165519Slinton #include "runtime.h" 175519Slinton #include "frame.rep" 185519Slinton #include "sym.h" 195519Slinton #include "machine.h" 205519Slinton #include "object.h" 215519Slinton #include "mappings.h" 225519Slinton 235519Slinton where() 245519Slinton { 255763Slinton FRAME *frp; 265763Slinton ADDRESS prevpc; 275763Slinton LINENO line; 285763Slinton SYM *f; 295519Slinton 305763Slinton if (pc == 0) { 315763Slinton error("program is not active"); 325763Slinton } 335763Slinton prevpc = pc; 345763Slinton for (frp = curframe(); frp != NIL; frp = nextframe(frp)) { 355763Slinton f = whatblock(entry(frp)); 365519Slinton line = srcline(prevpc); 375763Slinton printf("%s", name(f)); 385763Slinton printparams(f, frp); 395763Slinton printf(", "); 405763Slinton printwhere(line, srcfilename(prevpc)); 415763Slinton printf("\n"); 425763Slinton prevpc = frp->save_pc; 435763Slinton } 445763Slinton line = srcline(prevpc); 455763Slinton printf("%s, ", name(program)); 465763Slinton printwhere(line, srcfilename(prevpc)); 475763Slinton printf("\n"); 485519Slinton } 495519Slinton 505519Slinton /* 515519Slinton * Dump the world to the given file. 525519Slinton * Like "where", but variables are dumped also. 535519Slinton */ 545519Slinton 555519Slinton dump() 565519Slinton { 575763Slinton FRAME *frp; 585763Slinton ADDRESS prevpc; 595763Slinton LINENO line; 605763Slinton SYM *f; 615519Slinton 625763Slinton if (pc == 0) { 635763Slinton error("program is not active"); 645763Slinton } 655763Slinton prevpc = pc; 665763Slinton for (frp = curframe(); frp != NIL; frp = nextframe(frp)) { 675763Slinton f = whatblock(entry(frp)); 685519Slinton line = srcline(prevpc); 695763Slinton printf("%s", name(f)); 705763Slinton printparams(f, frp); 715763Slinton printf(", "); 725763Slinton printwhere(line, srcfilename(prevpc)); 735763Slinton printf("\n"); 745763Slinton dumpvars(f, frp); 755763Slinton putchar('\n'); 765763Slinton prevpc = frp->save_pc; 775763Slinton } 785763Slinton line = srcline(prevpc); 795763Slinton printf("%s, ", name(program)); 805763Slinton printwhere(line, srcfilename(prevpc)); 815763Slinton printf("\n"); 825763Slinton dumpvars(program, NIL); 835519Slinton } 84