如何让 GDB 前进到正确的位置?

How can I get GDB to advance to the correct place?

我在 OVPsim 下使用 GDB 和 Microblaze 组件 运行。我有以下问题:

(gdb) advance PTE_entry_empty
0x00000598 in PTE_entry_empty()
1: x/i $pc
=> 0x598 <PTE_entry_empty+36>: mfs    r6, rear

即,虽然我要求 GDB 前进到一个特定的符号,但它远远超出了它 - 甚至似乎知道它已经远远超出了它。我想我可以要求它前进到一个特定的地址(在本例中为 0x574),但是有更通用的解决方案吗?

advance(和break)命令的参数可以是函数名、行号、标签,或者是 * 后跟地址表达式。

指定函数名将使 gdb 在函数序言后停止。如果想停在PTE_entry_empty函数的确切起始地址,可以做

(gdb) advance *PTE_entry_empty

* 的使用似乎违反直觉,因为不涉及间接寻址。就当是关键字吧。