Debugging 这是gdb非停止模式自动化的问题设计吗?
我在.gdbinit文件中实现了这段代码,以使停止需要gdb命令(如x、set等)起作用Debugging 这是gdb非停止模式自动化的问题设计吗?,debugging,scripting,gdb,breakpoints,gdbinit,Debugging,Scripting,Gdb,Breakpoints,Gdbinit,我在.gdbinit文件中实现了这段代码,以使停止需要gdb命令(如x、set等)起作用 $pince_debugging_mode变量的目的是通知gdb程序是否出于调试目的中断目标 我担心这种设计的信号并发性:假设我们在一个地址上放置了一个断点,在等待它被触发时,我们想用x命令检查一些地址。执行x命令后,将执行hook stop,因为我们已经用x命令停止了线程。假设在执行hook post时已到达断点,但hook stop没有意识到这一点,并且$pince\u debugation\u mod
$pince_debugging_mode
变量的目的是通知gdb程序是否出于调试目的中断目标
我担心这种设计的信号并发性:假设我们在一个地址上放置了一个断点,在等待它被触发时,我们想用x命令检查一些地址。执行x命令后,将执行hook stop,因为我们已经用x命令停止了线程。假设在执行hook post时已到达断点,但hook stop没有意识到这一点,并且$pince\u debugation\u mode
仍然等于0,因此它将执行c&
命令,目标将继续。因此,由于这个并发性问题,在断点处停止并不意味着什么
这个问题从未发生过,但我担心发生的可能性,即使可能性很低,我也不想冒险。我能做些什么来避免这个可能的问题
注意:定义hookpost-x是有问题的,因为每当x命令抛出异常时,都不会执行hookpost,因此在抛出异常x命令后将无法继续
define hook-x
if $pince_debugging_mode == 0
interrupt
end
end
define hook-stop
if $pince_debugging_mode == 0
c &
end
end