Как я могу найти места системных вызовов моей программы?
Из руководства пользователя:
-i Print the instruction pointer at the time of the system call.
Я установил свою программу:
strace -i prog
В результате я получил много системных вызовов. Один из них:
[000da49c] open("./rabbit.o", O_RDONLY) = 3
Но дизассемблированная инструкция по этому адресу проги не вызывает системный вызов (редактор):
da49c ! mov r7, ip
Что случилось? Как я могу найти места системных вызовов моей программы?
PS Архитектура моего устройства не поддерживает системный вызов GDB-команды catch.
1 ответ
Решение
Чтобы процитировать раздел "Ошибки" справочной страницы "strace":
The -i option is weakly supported.
Еще один совет, который может вам помочь: вы смотрели на предыдущий код? IP в момент его выдачи уже указывает на СЛЕДУЮЩУЮ инструкцию после системного вызова. Так что вы должны проверить инструкцию перед da49c
,