根据these docs,无法从跟踪点获取完整的堆栈回溯,但可以通过记录堆栈的一部分来获取部分跟踪。
我该怎么做?
答案 0 :(得分:5)
我已经近似了我想要在断点上使用命令打印回溯然后自动继续的行为:
> break functionName
> commands
> bt
> continue
> end
答案 1 :(得分:1)
为了将来的参考,我刚刚找到了与此in the gdb documentation 13.1.10 tracepoint restrictions相关的内容,它表示无法在跟踪点中收集backtrace命令的结果,但是可以通过读取类似{的内容来收集堆栈。 {1}}。您可能需要稍微调整一下:您可能需要读取更多字节,并且堆栈指针可能具有不同的名称(对于x86-64,rsp) 否则:
*(unsigned char *)$esp@300