gpt4 book ai didi

rust - Gdb:目标远程连接在错误的地方?

转载 作者:行者123 更新时间:2023-12-03 11:36:29 26 4
gpt4 key购买 nike

我正在根据 Rust Embedded Book 学习如何使用 OpenOCD 和 GDB .
当您连接到正在运行的 OpenOCD 时:

(gdb) target remote :3333
Remote debugging using :3333
0x00000000 in ?? ()
我知道有些东西在没有任何变化的情况下就崩溃了,现在我看到了这样的东西:
(gdb) target remote :3333
Remote debugging using :3333
0x08000bbe in __c_m_sh_syscall ()
从那以后它就不能正常工作了。 0x00000000 in ?? () 有什么用线的意思,如何设置回权?

最佳答案

当您使用 target remote 连接到目标时GDB 向目标询问其当前的寄存器状态,包括 $pc值(value)。 GDB 不会(此时)以任何方式修改远程状态。
当你第一次连接远程时报告了 $pc 0x0 的值.如果 Remote 由于某种原因改变了状态,比如说,你在 Remote 上运行了一些东西,那么 $pc值可能会改变,比如 0x08000bbe .
如果您随后断开连接并重新连接,远程目标可能仍然有 $pc 0x08000bbe 的值这就是 GDB 会看到的。
正如评论中提到的,GDB 只是试图映射 $pc值到您程序中的调试信息上。 ??显示 GDB 在地址 0x0 找不到任何符号.虽然 GDB 确实找到了符号 __c_m_sh_syscall地址附近0x08000bbe .然而,这些信息在这一点上没有多大意义,您还没有将任何东西加载到目标上,所以您并不是真正在函数 __c_m_sh_syscall 中。 ,它只是 Remote 的当前地址。
当你做 load命令这是当 GDB 将可执行文件加载到目标上并写入 $pc 时.
TL; 博士;如果您的工作流程是 target remote然后 load , 不用担心 target remote 之后的目标状态,这只是您连接时目标中碰巧出现的任何随机状态。

关于rust - Gdb:目标远程连接在错误的地方?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65738714/

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