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