1
0
mirror of https://github.com/golang/go synced 2024-11-12 04:30:22 -07:00

print profile to stderr. sheesh.

R=rsc
DELTA=40  (0 added, 0 deleted, 40 changed)
OCL=32694
CL=32698
This commit is contained in:
Rob Pike 2009-08-03 21:03:40 -07:00
parent 2495c14d5c
commit 7deeb5bd78

View File

@ -66,32 +66,32 @@ PC *counters[Ncounters];
void void
regprint(void) regprint(void)
{ {
print("ax\t0x%llux\n", ureg.ax); fprint(2, "ax\t0x%llux\n", ureg.ax);
print("bx\t0x%llux\n", ureg.bx); fprint(2, "bx\t0x%llux\n", ureg.bx);
print("cx\t0x%llux\n", ureg.cx); fprint(2, "cx\t0x%llux\n", ureg.cx);
print("dx\t0x%llux\n", ureg.dx); fprint(2, "dx\t0x%llux\n", ureg.dx);
print("si\t0x%llux\n", ureg.si); fprint(2, "si\t0x%llux\n", ureg.si);
print("di\t0x%llux\n", ureg.di); fprint(2, "di\t0x%llux\n", ureg.di);
print("bp\t0x%llux\n", ureg.bp); fprint(2, "bp\t0x%llux\n", ureg.bp);
print("r8\t0x%llux\n", ureg.r8); fprint(2, "r8\t0x%llux\n", ureg.r8);
print("r9\t0x%llux\n", ureg.r9); fprint(2, "r9\t0x%llux\n", ureg.r9);
print("r10\t0x%llux\n", ureg.r10); fprint(2, "r10\t0x%llux\n", ureg.r10);
print("r11\t0x%llux\n", ureg.r11); fprint(2, "r11\t0x%llux\n", ureg.r11);
print("r12\t0x%llux\n", ureg.r12); fprint(2, "r12\t0x%llux\n", ureg.r12);
print("r13\t0x%llux\n", ureg.r13); fprint(2, "r13\t0x%llux\n", ureg.r13);
print("r14\t0x%llux\n", ureg.r14); fprint(2, "r14\t0x%llux\n", ureg.r14);
print("r15\t0x%llux\n", ureg.r15); fprint(2, "r15\t0x%llux\n", ureg.r15);
print("ds\t0x%llux\n", ureg.ds); fprint(2, "ds\t0x%llux\n", ureg.ds);
print("es\t0x%llux\n", ureg.es); fprint(2, "es\t0x%llux\n", ureg.es);
print("fs\t0x%llux\n", ureg.fs); fprint(2, "fs\t0x%llux\n", ureg.fs);
print("gs\t0x%llux\n", ureg.gs); fprint(2, "gs\t0x%llux\n", ureg.gs);
print("type\t0x%llux\n", ureg.type); fprint(2, "type\t0x%llux\n", ureg.type);
print("error\t0x%llux\n", ureg.error); fprint(2, "error\t0x%llux\n", ureg.error);
print("pc\t0x%llux\n", ureg.ip); fprint(2, "pc\t0x%llux\n", ureg.ip);
print("cs\t0x%llux\n", ureg.cs); fprint(2, "cs\t0x%llux\n", ureg.cs);
print("flags\t0x%llux\n", ureg.flags); fprint(2, "flags\t0x%llux\n", ureg.flags);
print("sp\t0x%llux\n", ureg.sp); fprint(2, "sp\t0x%llux\n", ureg.sp);
print("ss\t0x%llux\n", ureg.ss); fprint(2, "ss\t0x%llux\n", ureg.ss);
} }
int int
@ -203,7 +203,7 @@ xptrace(Map *map, uvlong pc, uvlong sp, Symbol *sym)
{ {
char buf[1024]; char buf[1024];
if(sym == nil){ if(sym == nil){
print("syms\n"); fprint(2, "syms\n");
return; return;
} }
if(histograms) if(histograms)
@ -211,14 +211,14 @@ xptrace(Map *map, uvlong pc, uvlong sp, Symbol *sym)
if(!histograms || stacks > 1) { if(!histograms || stacks > 1) {
if(nextpc == 0) if(nextpc == 0)
nextpc = sym->value; nextpc = sym->value;
print("%s(", sym->name); fprint(2, "%s(", sym->name);
print(")"); fprint(2, ")");
if(nextpc != sym->value) if(nextpc != sym->value)
print("+%#llux ", nextpc - sym->value); fprint(2, "+%#llux ", nextpc - sym->value);
if(have_syms && linenums && fileline(buf, sizeof buf, pc)) { if(have_syms && linenums && fileline(buf, sizeof buf, pc)) {
print(" %s", buf); fprint(2, " %s", buf);
} }
print("\n"); fprint(2, "\n");
} }
nextpc = pc; nextpc = pc;
} }
@ -234,7 +234,7 @@ stacktracepcsp(Map *map, uvlong pc, uvlong sp)
else { else {
addtohistogram(nextpc, 0, sp); addtohistogram(nextpc, 0, sp);
if(!histograms || stacks > 1) if(!histograms || stacks > 1)
print("\n"); fprint(2, "\n");
} }
} }
@ -245,10 +245,10 @@ printpc(Map *map, uvlong pc, uvlong sp)
if(registers) if(registers)
regprint(); regprint();
if(have_syms > 0 && linenums && fileline(buf, sizeof buf, pc)) if(have_syms > 0 && linenums && fileline(buf, sizeof buf, pc))
print("%s\n", buf); fprint(2, "%s\n", buf);
if(have_syms > 0 && functions) { if(have_syms > 0 && functions) {
symoff(buf, sizeof(buf), pc, CANY); symoff(buf, sizeof(buf), pc, CANY);
print("%s\n", buf); fprint(2, "%s\n", buf);
} }
if(stacks){ if(stacks){
stacktracepcsp(map, pc, sp); stacktracepcsp(map, pc, sp);
@ -317,7 +317,8 @@ findfunc(uvlong pc)
if(f->s.value == s.value) if(f->s.value == s.value)
return f; return f;
f = mallocz(sizeof *f, 1); f = malloc(sizeof *f);
memset(f, 0, sizeof *f);
f->s = s; f->s = s;
f->next = func[h]; f->next = func[h];
func[h] = f; func[h] = f;
@ -374,13 +375,13 @@ dumphistogram()
qsort(ff, nfunc, sizeof ff[0], compareleaf); qsort(ff, nfunc, sizeof ff[0], compareleaf);
// print. // print.
print("%d samples (avg %.1g threads)\n", nsample, (double)nsamplethread/nsample); fprint(2, "%d samples (avg %.1g threads)\n", nsample, (double)nsamplethread/nsample);
for(i = 0; i < nfunc; i++) { for(i = 0; i < nfunc; i++) {
f = ff[i]; f = ff[i];
print("%6.2f%%\t", 100.0*(double)f->leaf/nsample); fprint(2, "%6.2f%%\t", 100.0*(double)f->leaf/nsample);
if(stacks) if(stacks)
print("%6.2f%%\t", 100.0*(double)f->onstack/nsample); fprint(2, "%6.2f%%\t", 100.0*(double)f->onstack/nsample);
print("%s\n", f->s.name); fprint(2, "%s\n", f->s.name);
} }
} }