Ошибка Systemtap в Ubuntu

после установки systemtap на ubuntu, тестовый пример hello-stap.stp。но есть некоторые ошибки。

Как я могу это исправить?

Спасибо

версия systemtap

Транслятор/драйвер Systemtap (версия 2.9/0.165, версия Debian 2.9-2ubuntu2 (xenial))

Copyright (C) 2005-2015 Red Hat, Inc. и другие

Это бесплатное программное обеспечение; см. источник условий копирования.

включенные функции: AVAHI LIBSQLITE3 NLS NSS TR1_UNORDERED_MAP

привет-stap.stp

probe begin
{
    print("hello world\n")
    exit()
}

это информация об ошибке。

Ошибка 1:

В файле, включенном из /usr/share/systemtap/runtime/linux/runtime.h:204:0, из /usr/share/systemtap/runtime/runtime.h:24, из /tmp/stapd8LhT7/stap_24feca2d4e5abb002d28b0bc184e6d61_945_src.c:25 : /usr/share/systemtap/runtime/linux/access_process_vm.h: в функции '__access_process_vm_': /usr/share/systemtap/runtime/linux/access_process_vm.h:35:29: ошибка: передача аргумента 1 из 'get_user_pages' делает целое из указателя без приведения [-Werror=int-conversion] ret = get_user_pages (tsk, mm, addr, 1, write, 1, &page, &vma); ^


person user8561368    schedule 05.09.2017    source источник
comment
другая информация об ошибке   -  person user8561368    schedule 05.09.2017
comment
Вам следует задать этот вопрос на сайте askubuntu.com.   -  person Memduh    schedule 05.09.2017
comment
@Memduh Чагры Демир, спасибо, я добавляю вопрос askubuntu.com/questions/ 952874/systemtap-ubuntu-ошибка/  -  person user8561368    schedule 05.09.2017


Ответы (2)


У меня была та же проблема, поэтому я собираю systemtap из исходников. Я использую v3.1 на xenial, и пока все хорошо.

## Install build-required packages
apt-get update && \
        apt-get install -y build-essential gettext elfutils libdw-dev python wget tar && \
        apt-get clean;

## Build from source
wget https://sourceware.org/systemtap/ftp/releases/systemtap-3.1.tar.gz
tar xzvf systemtap-3.1.tar.gz

## Instruction: https://sourceware.org/git/?p=systemtap.git;a=blob_plain;f=README;hb=HEAD
cd systemtap-3.1/ && \
         ./configure && \
         make all && \
         make install ;
person mcfongtw    schedule 12.10.2017
comment
Попробуйте ваш метод, но все же простой скрипт не может быть правильно скомпилирован. - person shengshan zhang; 08.03.2019
comment
Извините, это работает, за исключением того, что systemtap-4.0.tar.gz будет работать. Большое спасибо! - person shengshan zhang; 08.03.2019

Я сам столкнулся с этой проблемой. Короче говоря, пакет systemtap Ubuntu в настоящее время устарел.

Объяснение. Некоторое время назад ядро ​​обновило функцию get_user_pages(), что означало, что все, что использовало предыдущий прототип функции, теперь не компилировалось. Это также произошло с модулями VMWare vmmon и vmnet. Когда вы запускаете stap, он генерирует исходный файл модуля ядра, который использует get_user_pages(), компилирует его и загружает в ядро. Но сгенерированный им код C использует старое определение функции и, следовательно, не может быть построен.

В настоящее время решения нет: вы можете либо собрать SystemTap из исходного кода (что мне не удалось сделать, но я и не очень старался), либо попросить Ubuntu обновить их сломанный пакет systemtap — я отправил отчет об ошибке, возможно, вы сможете это подтвердить.

Мое решение состояло в том, чтобы переключиться на Fedora 26 и запустить /usr/bin/stap-prep для установки необходимых компонентов. Работал без нареканий!

person Farhan Yusufzai    schedule 25.09.2017
comment
да, сборка systemtap из новейшей исходной версии может помочь - person shengshan zhang; 13.03.2019