У меня есть общий объектный файл, для которого у меня нет источника. Меня интересует, что происходит при входе в конкретную функцию. При входе в эту функцию в определенной ситуации (при наличии Wi-Fi соединения) программа реагирует определенным образом; в другой ситуации (нет связи) он ведет себя по-другому. Пытаюсь выявить точку в программе, где проверяется внешняя ситуация (наличие соединения Wifi), с целью пропатчить общий объектный файл, чтобы обойти эту проверку.
Используя gdb
, я могу следить за выполнением программы вручную. Однако очень сложно найти вручную точку, в которой пути выполнения отличаются. Нет ли способа попросить gdb
сохранить последовательность выполняемых машинных инструкций (и, возможно, еще какое-то состояние, например содержимое регистра) и различать последовательности в обеих ситуациях, чтобы легче определить, в какой момент выполняется внешнее условие? проверено?
Что-то похожее на функцию gdb record
, однако я не могу ее использовать, потому что программа работает на ARM, а запись на этой цели не поддерживается. Тем не менее, я не ищу какой-либо аппаратной поддержки, потому что производительность вообще не критична - мне просто нужен способ попросить gdb
автоматизировать регистрацию выполняемых инструкций, так же, как я сделал бы вручную, следуя выполнение программы с ni
. Существует ли что-нибудь подобное?