Как я могу найти места системных вызовов моей программы?

Из руководства пользователя:

-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,

Другие вопросы по тегам