MCPcopy Create free account
hub / github.com/HelenOS/helenos / stack_trace_ctx

Function stack_trace_ctx

kernel/generic/src/debug/stacktrace.c:43–72  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

41#define STACK_FRAMES_MAX 20
42
43void stack_trace_ctx(stack_trace_ops_t *ops, stack_trace_context_t *ctx)
44{
45 int cnt = 0;
46 const char *symbol;
47 uintptr_t offset;
48 uintptr_t fp;
49 uintptr_t pc;
50
51 while ((cnt++ < STACK_FRAMES_MAX) &&
52 (ops->stack_trace_context_validate(ctx))) {
53 if (ops->symbol_resolve &&
54 ops->symbol_resolve(ctx->pc, &symbol, &offset)) {
55 if (offset)
56 printf("%p: %s()+%p\n", (void *) ctx->fp,
57 symbol, (void *) offset);
58 else
59 printf("%p: %s()\n", (void *) ctx->fp, symbol);
60 } else
61 printf("%p: %p()\n", (void *) ctx->fp, (void *) ctx->pc);
62
63 if (!ops->return_address_get(ctx, &pc))
64 break;
65
66 if (!ops->frame_pointer_prev(ctx, &fp))
67 break;
68
69 ctx->fp = fp;
70 ctx->pc = pc;
71 }
72}
73
74void stack_trace(void)
75{

Callers 2

stack_traceFunction · 0.85
stack_trace_istateFunction · 0.85

Calls 1

printfFunction · 0.50

Tested by

no test coverage detected