Доброго времени суток!
Очень нужна помощь в отладке приложения. Точнее совет. Суть проблемы: имеется простое приложение на С, в котором есть функция read(), которая читает данные из последовательного порта. Необходимо получить список всех вызовов, которые происходят с момента вызова этой функции. Пробовал jump into в Eclipse CDT, но почему-то для этой функции исходники не находятся средой(они установлены).
>Доброго времени суток!
>Очень нужна помощь в отладке приложения. Точнее совет. Суть проблемы: имеется простое
>приложение на С, в котором есть функция read(), которая читает данные
>из последовательного порта. Необходимо получить список всех вызовов, которые происходят с
>момента вызова этой функции. Пробовал jump into в Eclipse CDT, но
>почему-то для этой функции исходники не находятся средой(они установлены).Пардон, список каких вызовов вы хотите получить? системных?
если до момента окончания read то один, этот. если до какого то другого то смотрите strace
>>Доброго времени суток!
>>Очень нужна помощь в отладке приложения. Точнее совет. Суть проблемы: имеется простое
>>приложение на С, в котором есть функция read(), которая читает данные
>>из последовательного порта. Необходимо получить список всех вызовов, которые происходят с
>>момента вызова этой функции. Пробовал jump into в Eclipse CDT, но
>>почему-то для этой функции исходники не находятся средой(они установлены).
>
>Пардон, список каких вызовов вы хотите получить? системных?
>если до момента окончания read то один, этот. если до какого то
>другого то смотрите straceДругими словами read() - системный вызов (man syscalls).
>>Доброго времени суток!
>>Очень нужна помощь в отладке приложения. Точнее совет. Суть проблемы: имеется простое
>>приложение на С, в котором есть функция read(), которая читает данные
>>из последовательного порта. Необходимо получить список всех вызовов, которые происходят с
>>момента вызова этой функции. Пробовал jump into в Eclipse CDT, но
>>почему-то для этой функции исходники не находятся средой(они установлены).
>
>Пардон, список каких вызовов вы хотите получить? системных?
>если до момента окончания read то один, этот. если до какого то
>другого то смотрите straceПрошу прощения, наверное не очень ясно выразился. Мне нужно получить список функций, которые вызываются _внутри_ read() и т.д. по нарастающей.
>Прошу прощения, наверное не очень ясно выразился. Мне нужно получить список функций,
>которые вызываются _внутри_ read() и т.д. по нарастающей.Не проще посмотреть исходники glibc?
>>Прошу прощения, наверное не очень ясно выразился. Мне нужно получить список функций,
>>которые вызываются _внутри_ read() и т.д. по нарастающей.
>
>Не проще посмотреть исходники glibc?к сожалению нет=( дело в том, что в конечном итоге мне хочется получить список функций стандартного tty драйвера, которыми пользуется драйвер моего PCI-RS422 контроллера. Я понимаю, что все очень запутанно, но все же...Я с радостью приму любой совет по поводу того, как мне получить-таки список этих функций. Ковыряние в исходниках не помогло - слишком большое количество файлов, да и половина функций там явлются обертками для других функций и т.д.
Подозреваю что там используется ioctl().
>[оверквотинг удален]
>>
>>Не проще посмотреть исходники glibc?
>
>к сожалению нет=( дело в том, что в конечном итоге мне хочется
>получить список функций стандартного tty драйвера, которыми пользуется драйвер моего PCI-RS422
>контроллера. Я понимаю, что все очень запутанно, но все же...Я с
>радостью приму любой совет по поводу того, как мне получить-таки список
>этих функций. Ковыряние в исходниках не помогло - слишком большое количество
>файлов, да и половина функций там явлются обертками для других функций
>и т.д.а что собственно говоря вы смотрели? вам надо исходники ядра смотреть. список функций которые выполняет драйвер не очень большой.
>>Прошу прощения, наверное не очень ясно выразился. Мне нужно получить список функций,
>>которые вызываются _внутри_ read() и т.д. по нарастающей.
>
>Не проще посмотреть исходники glibc?read() - системный вызов, его нет и не может быть в glibc.
при вызове read() процесс передает управление ядру. Дальше происходят внутренние вызовы ядра пока не дойдет до драйвера и вызова его функции объявленную как module_read().
ЗЫ в программировании ядра линуха не силен, но как-то так в общем. Но read() точно системный вызов =))
>Прошу прощения, наверное не очень ясно выразился. Мне нужно получить список функций,
>которые вызываются _внутри_ read() и т.д. по нарастающей.См. исходники ядра, модуль serial,
ключевой файл, если не ошибаюсь, serio.c
> Необходимо получить список всех вызовов, которые происходят с
> момента вызова этой функции.man strace
ок, спасибо, кое-что прояснили (по крайней мере информации к размышлению подкинули;))