我有一个没有源的共享对象文件。我对输入特定功能时会发生什么感兴趣。当在某种情况下(当有 Wifi 连接可用时)进入该功能时,程序会以某种方式做出反应;在不同的情况下(没有可用的连接),它的行为方式不同。我试图确定程序中正在测试外部情况(Wifi 连接的存在)的点,目的是修补共享对象文件以绕过此检查。
使用gdb
,我可以手动跟踪程序的执行。但是,手动找到执行路径不同的点是很痛苦的。有没有办法要求gdb
存储正在执行的机器指令序列(以及可选的更多状态,如寄存器内容)并在两种情况下区分序列以更容易地确定在哪个点检查外部条件?
相关的似乎是该gdb record
功能,但是我不能使用它,因为该程序在 ARM 上运行并且此目标不支持录制。但是,我并不是在寻找任何形式的硬件支持,因为性能根本不重要——我只需要一种方法来要求gdb
自动记录所执行的指令,就像我通过遵循程序执行与ni
. 这样的事情存在吗?