gpt4 book ai didi

Linux(MIPS): Temporarily "change" register contents when viewing core dump

转载 作者:太空狗 更新时间:2023-10-29 11:16:07 26 4
gpt4 key购买 nike

我的应用程序中的一些线程位于优化函数中,当我调试应用程序时,gdb 无法从这些函数回溯。但是我已经查看了汇编程序,并且可以通过执行以下操作来部分地手动展开堆栈到前一个函数的帧:

set $old_ra = $ra
set $old_sp = $sp
set $ra = *(unsigned long*)($sp+28)
set $sp = $sp + 48
bt
set $ra = $old_ra
set $sp = $old_sp

如果我正在进行实时调试,这将非常有效,并且它成功地显示了完整的回溯。我希望在查看核心转储时能够离线执行相同的操作。显然,在核心转储中戳寄存器的概念是没有意义的,但是有没有办法告诉 gdb“只需将这个值用于寄存器”,以便我可以进行类似的回溯?

最佳答案

不是开箱即用的。我发现的唯一方法是物理修改核心文件。 ELF 核心文件通常会有一个或多个包含进程寄存器的“reg”部分。您所需要做的就是找出该部分中您要更改的寄存器的确切位置,然后编辑文件,将新值放在那里并重新运行 GDB。

关于Linux(MIPS): Temporarily "change" register contents when viewing core dump,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7611082/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com