如何编写GDB函数来与程序计数器进行比较

如何编写GDB函数来与程序计数器进行比较,gdb,68000,jtag,Gdb,68000,Jtag,我试图编写一个gdb函数,循环直到传递的参数等于程序计数器 我正在使用一个原始的CPU 68332。没有硬件断点。没有支持GDB软件断点的操作系统,只有一个指令步骤。GDB提供“nexti计数”的“软件”仿真。 JTAG提供了一个run-to地址 然而,由于某种原因,JTAG在用于运行到地址时会占用CPU,因此会出现总线错误。我似乎只能可靠地使用“单步”指令 如果我使用GDB“步进”到地址,我不会得到总线错误 下面是我对GDB函数的尝试 define mtia if $argc == 1

我试图编写一个gdb函数,循环直到传递的参数等于程序计数器

我正在使用一个原始的CPU 68332。没有硬件断点。没有支持GDB软件断点的操作系统,只有一个指令步骤。GDB提供“nexti计数”的“软件”仿真。 JTAG提供了一个run-to地址

然而,由于某种原因,JTAG在用于运行到地址时会占用CPU,因此会出现总线错误。我似乎只能可靠地使用“单步”指令

如果我使用GDB“步进”到地址,我不会得到总线错误

下面是我对GDB函数的尝试

define mtia
    if $argc == 1 then
    set $address = *(unsigned char*)$arg0
    while($address != $pc)
      nexti
    end
end
我似乎无法正确地使用语法来让GDB接受并运行该函数

define mtia
    if $argc == 1 then
    set $address = *(unsigned char*)$arg0
    while($address != $pc)
      nexti
    end
end

正确的语法是什么?

以上GDB命令函数的正确语法是

define mtia
    if $argc == 1 then
    set $address = (unsigned char*)$arg0
    while($address != $pc)
      nexti
    end
end
我的前面有一个星号(unsigned char*)。这删除了指针类型。 这导致$address!=$pc作为$pc被视为指针

此函数执行单个汇编指令步骤,直到到达传入函数的地址为止。速度慢,但在旧的M68332 CPU上,这是我所有的