Mar*_*ick 11
Gdb 的 CLI 支持while循环。没有内置sleep命令,但是您可以调用 shell 来运行sleep程序,或者使用 gdb 的内置 python 解释器(如果有的话)。它可以被 Control-C 打断。
方法一:
(gdb) while (1) > step > shell sleep 1 > end
方法二:
(gdb) python 导入时间 (gdb) while (1) > step > python time.sleep(1) > end
方法三(定义一个宏):
(gdb)定义运行缓慢 键入用于定义“runslowly”的命令。 以一行说“结束”结束。 > python 导入时间 > while(1) > step > python time.sleep(1) > end > end (gdb)文档运行缓慢 为“runslowly”键入文档。 以一行说“结束”结束。 >一次走一行,每 1 秒一次 >结束 (gdb) 运行缓慢
expect 可以自动化这个
#!/usr/bin/env expect
spawn -noecho gdb -q ls
expect -ex {(gdb)}
send -- "break main\r"
expect -ex {(gdb)}
send -- "run\r"
while {1} {
expect -ex {(gdb)}
send -- "s\r"
sleep 1
}
Run Code Online (Sandbox Code Playgroud)
或者如果有程序用完的风险,s你可以重复gdb它,但稍微复杂一点
#!/usr/bin/env expect
while {1} {
spawn -noecho gdb -q ls
expect -ex {(gdb)}
send -- "break main\r"
expect -ex {(gdb)}
send -- "run\r"
expect {
-ex {The program is not being run} {}
eof {}
-ex {(gdb)} {
send -- "s\r"
sleep 1
exp_continue
}
}
}
Run Code Online (Sandbox Code Playgroud)