sdb
sdb copied to clipboard
Support for function args + local variables
= Problem
Need a convenient way to see argument names and associated values when viewing call stacks.
= Solution
This PR introduces a new command stack_args that can be used to display detailed information (including values for local variables) for frames in a call stack. It takes one or more stack pointers as input. E.g.
sdb> echo 0xffff96609b7d4680 | stack_args
(struct task_struct *)0xffff96609b7d4680
#0 struct rq *context_switch(struct rq *rq, struct task_struct *prev, struct task_struct *next, struct rq_flags *rf)
rf = (struct rq_flags *)<absent>
next = (struct task_struct *)<absent>
prev = (struct task_struct *)<absent>
rq = (struct rq *)<absent>
#1 void __schedule(bool preempt)
preempt = (bool)<absent>
prev = (struct task_struct *)0xffff96609b7d4680
next = (struct task_struct *)<absent>
switch_count = (unsigned long *)<absent>
rf = (struct rq_flags){ 0, {}, 4 }
rq = (struct rq *)<absent>
cpu = (int)<absent>
#2 void schedule()
tsk = (struct task_struct *)<absent>
...
The command accepts two arguments:
-f <frame#>- will print only the requested frame of the stack, and provide more detail values provided for locals.-r- will print available register values for each stack frame.
Note that the syntax used here is still evolving and subject to change.