Strace не работает в мишени MIPS

Я работаю над встроенной платой с процессором MIPS. Я столкнулся с проблемой при выполнении strace на цели.

Среда сборки:

glibc version: 2.3.2
gcc version: 3.4.4
strace version: 4.4.94 
linux version : 2.6.34.1

Я перекрестно скомпилировал strace для цели MIPS и пытаюсь запустить strace в цели. Но strace не работает. Я не вижу никакой трассировки системного вызова.

Вывод выполнения strace на цели:

#strace /bin/ls
(To be restarted).
#

Я чувствую, что мне не хватает какой-то конфигурации или флагов, которые нужно настроить для работы strace.

CFLAGS = "-D_REENTRANT -g -Os -fomit-frame-pointer -pipe -march=mips32r2 -mtune=mips32r2 -Wall -g -DHAVE_SERVICE_CTRL"

Пожалуйста помоги мне с этим.


person vignesh lal    schedule 23.05.2013    source источник
comment
Спасибо за ваш вклад. Я изменил флаг оптимизатора с Os на -O в CFLAGS (CFLAGS=-D_REENTRANT -g -fomit-frame-pointer -pipe -march=mips32r2 -O -Wall -DHAVE_SERVICE_CTRL), теперь я могу получить трассировку системного вызова, но по-прежнему выводить результат дает некоторые большие возвращаемые значения. режим = открытый, /etc/ld.so.preload, O_RDONLYDIRd/4464388-717129012:01:268633712   -  person vignesh lal    schedule 24.05.2013


Ответы (1)


strace использует системный вызов ptrace() для отслеживания целевого исполняемого файла. Возможно, ваш дистрибутив Linux не поддерживает ptrace(). Я бы создал простую тестовую программу, которая вызывает ptrace(), чтобы проверить, работает она или нет.

Отладка также будет очень полезна. Вы можете установить удаленную отладку с помощью gdb и отлаживать целевую плату с ПК.

person stdcall    schedule 23.05.2013
comment
После снятия флага оптимизатора в CFLAGS=-D_REENTRANT -g -fomit-frame-pointer -pipe -march=mips32r2 -Wall strace начинает работать как исключение. - person vignesh lal; 29.05.2013