Добавление пользовательских типов структур в strace

StackOverflow https://stackoverflow.com/questions/1374246

Вопрос

Я пытаюсь перепроектировать общий объект пользовательского режима, который взаимодействует с драйвером ядра через системные вызовы ioctl.У меня есть заголовочный файл с определениями для интерфейса ioctl драйвера ядра (т.е.#определяет для ioctl номера команд и определения структуры для различных данных, отправляемых в ioctl).

Я вижу, что strace имеет возможность отменять ссылки на пользовательские указатели, которые передаются в системные вызовы, но он, очевидно, не может отменять ссылки на мои пользовательские структуры, которые передаются в ioctl.Есть ли простой способ добавить мои определения в strace, чтобы я мог получать значимые данные, передаваемые в ioctl, а не просто адрес указателя?

У меня есть исходный код для strace, и я успешно скомпилировал / установил его, но все мои попытки включить мой собственный заголовок не возымели никакого эффекта.

Это было полезно?

Решение

Сборка strace не позволяет автоматически анализировать структуры и генерировать для них синтаксические анализаторы - вам придется написать некоторый код для обработки ваших структур.

Другие советы

Самым простым способом достичь этого может быть написание библиотечного вставщика для ioctl().Есть хорошее руководство по выполнению этого в Linux здесь.

Вы можете проверить наличие пользовательских номеров команд, которые использует ваше приложение;и выгрузите структуры для них.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top