有时会出现一些小堆栈损坏导致gdb无法执行"回溯",我创建了以下gdb宏(x86-64,可以很容易地为x86工作),这取决于关闭省略帧指针(即-fno-omit-frame-pointer)并向我显示回溯中的函数。但是,我希望它也能显示参数值,并且理想情况下能够选择其中一个帧。 (例如"帧0x0123456789ABCDEF")。
define et
set $frameptr = $rbp
while $frameptr != 0
set $oldbp = *((void**)($frameptr+8))
print $frameptr
print $oldbp
info symbol $oldbp
set $frameptr = *((void**)($frameptr))
end
end