<div dir="ltr">Hello Sir,<div><br></div><div>From many days i am trying to add strace in my application and call it at run time. for this purpose i have installed ndk, imported strace package through Android.mk file. </div><div><br></div><div>My Android.mk file is:</div><div><br></div><div><pre style="color:rgb(0,0,0);font-family:"dejavu sans mono";font-size:9pt">LOCAL_PATH := $(call my-dir)</pre><pre style="color:rgb(0,0,0);font-family:"dejavu sans mono";font-size:9pt"><pre style="font-family:"dejavu sans mono";font-size:9pt">include $(CLEAR_VARS)</pre><pre style="font-family:"dejavu sans mono";font-size:9pt"><pre style="font-family:"dejavu sans mono";font-size:9pt">LOCAL_SRC_FILES := \<br>    access.c \<br>    affinity.c \<br>    aio.c \<br>    bjm.c \<br>    block.c \<br>    bpf.c \<br>    btrfs.c \<br>    cacheflush.c \<br>    capability.c \<br>    chdir.c \<br>    chmod.c \<br>    clone.c \<br>    copy_file_range.c \<br>    count.c \<br>    desc.c \<br>    dirent.c \<br>    dirent64.c \<br>    epoll.c \<br>    evdev.c \<br>    eventfd.c \<br>    execve.c \<br>    exit.c \<br>    fadvise.c \<br>    fallocate.c \<br>    fanotify.c \<br>    fchownat.c \<br>    fcntl.c \<br>    fetch_seccomp_fprog.c \<br>    fetch_struct_flock.c \<br>    fetch_struct_mmsghdr.c \<br>    fetch_struct_msghdr.c \<br>    fetch_struct_stat.c \<br>    fetch_struct_stat64.c \<br>    fetch_struct_statfs.c \<br>    file_handle.c \<br>    file_ioctl.c \<br>    flock.c \<br>    fstatfs.c \<br>    fstatfs64.c \<br>    fs_x_ioctl.c \<br>    futex.c \<br>    getcpu.c \<br>    getcwd.c \<br>    getrandom.c \<br>    get_robust_list.c \<br>    hdio.c \<br>    hostname.c \<br>    inotify.c \<br>    io.c \<br>    ioctl.c \<br>    ioperm.c \<br>    iopl.c \<br>    ioprio.c \<br>    ipc.c \<br>    ipc_msg.c \<br>    ipc_msgctl.c \<br>    ipc_sem.c \<br>    ipc_shm.c \<br>    ipc_shmctl.c \<br>    kcmp.c \<br>    kexec.c \<br>    keyctl.c \<br>    ldt.c \<br>    link.c \<br>    lookup_dcookie.c \<br>    loop.c \<br>    lseek.c \<br>    mem.c \<br>    membarrier.c \<br>    memfd_create.c \<br>    mknod.c \<br>    mmsghdr.c \<br>    mount.c \<br>    mq.c \<br>    msghdr.c \<br>    mtd.c \<br>    net.c \<br>    netlink.c \<br>    numa.c \<br>    oldstat.c \<br>    open.c \<br>    pathtrace.c \<br>    perf.c \<br>    personality.c \<br>    poll.c \<br>    prctl.c \<br>    print_mq_attr.c \<br>    print_msgbuf.c \<br>    print_sigevent.c \<br>    print_statfs.c \<br>    print_struct_stat.c \<br>    print_time.c \<br>    print_timex.c \<br>    printmode.c \<br>    printrusage.c \<br>    printsiginfo.c \<br>    process.c \<br>    process_vm.c \<br>    ptp.c \<br>    quota.c \<br>    readahead.c \<br>    readlink.c \<br>    reboot.c \<br>    renameat.c \<br>    resource.c \<br>    rtc.c \<br>    sched.c \<br>    scsi.c \<br>    seccomp.c \<br>    sendfile.c \<br>    sigaltstack.c \<br>    signal.c \<br>    signalfd.c \<br>    sigreturn.c \<br>    sock.c \<br>    sockaddr.c \<br>    socketcall.c \<br>    socketutils.c \<br>    sram_alloc.c \<br>    stat.c \<br>    stat64.c \<br>    statfs.c \<br>    statfs64.c \<br>    <b>strace.c</b> \<br>    swapon.c \<br>    sync_file_range.c \<br>    sync_file_range2.c \<br>    syscall.c \<br>    sysctl.c \<br>    sysinfo.c \<br>    syslog.c \<br>    sysmips.c \<br>    term.c \<br>    time.c \<br>    times.c \<br>    truncate.c \<br>    ubi.c \<br>    uid16.c \<br>    uid.c \<br>    umask.c \<br>    umount.c \<br>    uname.c \<br>    upeek.c \<br>    userfaultfd.c \<br>    util.c \<br>    utime.c \<br>    utimes.c \<br>    v4l2.c \<br>    vsprintf.c \<br>    wait.c \<br>    xattr.c \<br>    xmalloc.c \<br><br>LOCAL_CFLAGS := \<br>    -DGETGROUPS_T=gid_t \<br>    \<br>    -UHAVE_ASM_CACHECTL_H \<br>    -DHAVE_ASM_SIGCONTEXT_H=1 \<br>    -DHAVE_BLKGETSIZE64=1 \<br>    -UHAVE_BLUETOOTH_BLUETOOTH_H \<br>    -DHAVE___BUILTIN_POPCOUNT=1 \<br>    -DHAVE_DIRENT_H=1 \<br>    -DHAVE_DLADDR=1 \<br>    -DHAVE_ELF_H=1 \<br>    -DHAVE_FOPEN64=1 \<br>    -DHAVE_FORK=1 \<br>    -DHAVE_FSTATAT=1 \<br>    -DHAVE_FTRUNCATE=1 \<br>    -DHAVE_FUTIMENS=1 \<br>    -DHAVE_IF_INDEXTONAME=1 \<br>    -DHAVE_INET_NTOP=1 \<br>    -DHAVE_INET_PTON=1 \<br>    -DHAVE_INTTYPES_H=1 \<br>    -DHAVE_LINUX_BPF_H=1 \<br>    -DHAVE_LINUX_BSG_H=1 \<br>    -DHAVE_LINUX_BTRFS_H=1 \<br>    -DHAVE_LINUX_FALLOC_H=1 \<br>    -DHAVE_LINUX_FILTER_H=1 \<br>    -DHAVE_LINUX_FUTEX_H=1 \<br>    -DHAVE_LINUX_ICMP_H=1 \<br>    -DHAVE_LINUX_IF_PACKET_H=1 \<br>    -DHAVE_LINUX_INPUT_H=1 \<br>    -DHAVE_LINUX_IN6_H=1 \<br>    -DHAVE_LINUX_IPC_H=1 \<br>    -DHAVE_LINUX_MQUEUE=1 \<br>    -DHAVE_LINUX_MSG_H=1 \<br>    -DHAVE_LINUX_NETLINK_H=1 \<br>    -DHAVE_LINUX_PERF_EVENT_H=1 \<br>    -DHAVE_LINUX_SEM_H=1 \<br>    -DHAVE_LINUX_SHM_H=1 \<br>    -DHAVE_LITTLE_ENDIAN_LONG_LONG=1 \<br>    -DHAVE_LONG_LONG=1 \<br>    -DHAVE_NETINET_TCP_H=1 \<br>    -DHAVE_NETINET_UDP_H=1 \<br>    -DHAVE_POLL_H=1 \<br>    -DHAVE_PRCTL=1 \<br>    -DHAVE_PWRITEV=1 \<br>    -DHAVE_SENDMSG=1 \<br>    -DHAVE_SIGACTION=1 \<br>    -DHAVE_SIG_ATOMIC_T=1 \<br>    -DHAVE_SIGINFO_T=1 \<br>    -DHAVE_SIGINFO_T_SI_OVERRUN=1 \<br>    -DHAVE_SIGINFO_T_SI_SYSCALL=1 \<br>    -DHAVE_SIGINFO_T_SI_TIMERID=1 \<br>    -DHAVE_STATFS64=1 \<br>    -DHAVE_STDBOOL_H=1 \<br>    -DHAVE_STRERROR=1 \<br>    -DHAVE_STRUCT_BTRFS_IOCTL_DEFRAG_RANGE_ARGS_START=1 \<br>    -DHAVE_STRUCT_BTRFS_IOCTL_FEATURE_FLAGS_COMPAT_FLAGS=1 \<br>    -DHAVE_STRUCT_FLOCK=1 \<br>    -DHAVE_STRUCT_FLOCK64=1 \<br>    -DHAVE_STRUCT_MMSGHDR=1 \<br>    -DHAVE_STRUCT_MSGHDR_MSG_CONTROL=1 \<br>    -DHAVE_STRUCT_SIGCONTEXT=1 \<br>    -DHAVE_STRUCT_SIGEVENT__SIGEV_UN__PAD=1 \<br>    -DHAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID=1 \<br>    -DHAVE_STRUCT_STATFS64=1 \<br>    -UHAVE_STRUCT_STAT_ST_ACLCNT \<br>    -DHAVE_STRUCT_STAT_ST_BLKSIZE=1 \<br>    -DHAVE_STRUCT_STAT_ST_BLOCKS=1 \<br>    -UHAVE_STRUCT_STAT_ST_FLAGS \<br>    -UHAVE_STRUCT_STAT_ST_FSTYPE \<br>    -UHAVE_STRUCT_STAT_ST_GEN \<br>    -UHAVE_STRUCT_STAT_ST_LEVEL \<br>    -DHAVE_STRUCT_STAT_ST_RDEV=1 \<br>    -DHAVE_STRUCT_SYSINFO_FREEHIGH=1 \<br>    -DHAVE_STRUCT_SYSINFO_MEM_UNIT=1 \<br>    -DHAVE_STRUCT_SYSINFO_TOTALHIGH=1 \<br>    -DHAVE_STRUCT_UTSNAME_DOMAINNAME=1 \<br>    -DHAVE_SYS_EPOLL_H=1 \<br>    -DHAVE_SYS_IOCTL_H=1 \<br>    -DHAVE_SYS_POLL_H=1 \<br>    -DHAVE_SYS_REG_H=1 \<br>    -DHAVE_SYS_VFS_H=1 \<br>    -DHAVE_SYS_XATTR_H=1 \<br>    -DHAVE_UNISTD_H=1 \<br>    -DHAVE_UTIMENSAT=1 \<br>    \<br>    -DMAJOR_IN_SYSMACROS \<br>    -DPACKAGE_NAME='"strace"' \<br>    -DVERSION='"$(strace_version)"' \<br>    -DSIZEOF_OFF_T=SIZEOF_LONG \<br>    -DSIZEOF_LONG_LONG=8 \<br>    -DSTDC_HEADERS=1 \<br>    -DSTRACE_KNOWS_ONLY_EABI=1 \<br>    -D_LFS64_LARGEFILE=1 \<br><br>LOCAL_CFLAGS += -D_GNU_SOURCE=1 -D_POSIX_SOURCE=1<br><br>LOCAL_CFLAGS += -fno-strict-aliasing<br><br>LOCAL_CFLAGS_32 += -DSIZEOF_LONG=4 -DSIZEOF_RLIM_T=4 -DHAVE_STRUCT_STAT64=1<br>LOCAL_CFLAGS_64 += -DSIZEOF_LONG=8 -DSIZEOF_RLIM_T=8<br><br>LOCAL_CFLAGS_arm += -DARM=1<br>LOCAL_CFLAGS_arm += -DHAVE_STRUCT___OLD_KERNEL_STAT=1<br><br>LOCAL_CFLAGS_arm64 += -DAARCH64=1<br><br>LOCAL_CFLAGS_mips += -DMIPS=1 -DLINUX_MIPSO32=1<br>LOCAL_CFLAGS_mips += -DHAVE_ASM_SYSMIPS_H=1<br><br>LOCAL_CFLAGS_mips64 += -DMIPS=1 -DLINUX_MIPSN64=1<br>LOCAL_CFLAGS_mips64 += -DHAVE_ASM_SYSMIPS_H=1<br><br>LOCAL_CFLAGS_x86 += -DI386=1<br>LOCAL_CFLAGS_x86 += -DHAVE_STRUCT___OLD_KERNEL_STAT=1<br><br>LOCAL_CFLAGS_x86_64 += -DX86_64=1<br><br>LOCAL_CFLAGS += \<br>    -Wall \<br>    -Wwrite-strings \<br>    -Wsign-compare \<br>    -Wno-missing-field-initializers \<br>    -Wno-pointer-arith \<br>    -Wno-unused-parameter \<br>    -Wno-sign-compare \<br><br>LOCAL_C_INCLUDES_arm := $(LOCAL_PATH)/linux/arm $(LOCAL_PATH)/linux<br>LOCAL_C_INCLUDES_arm64 := $(LOCAL_PATH)/linux/aarch64 $(LOCAL_PATH)/linux<br>LOCAL_C_INCLUDES_mips := $(LOCAL_PATH)/linux/mips $(LOCAL_PATH)/linux<br>LOCAL_C_INCLUDES_mips64 := $(LOCAL_PATH)/linux/mips $(LOCAL_PATH)/linux<br>LOCAL_C_INCLUDES_x86 := $(LOCAL_PATH)/linux/i386 $(LOCAL_PATH)/linux<br>LOCAL_C_INCLUDES_x86_64 := $(LOCAL_PATH)/linux/x86_64 $(LOCAL_PATH)/linux<br><br>LOCAL_CLANG := true<br><br><b>LOCAL_MODULE := strace</b><br><br>LOCAL_MODULE_PATH := $(TARGET_OUT_OPTIONAL_EXECUTABLES)<br><br>LOCAL_MODULE_TAGS := debug<br><br>LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk<br><br><b>include $(BUILD_SHARED_LIBRARY)</b><br></pre><pre style="font-family:"dejavu sans mono";font-size:9pt"><b><br></b></pre><pre style="font-family:"dejavu sans mono";font-size:9pt">I cannot find any documentation about <b style="font-size:9pt">BUILD_SHARED_LIBRARY</b> at official page (<a href="https://developer.android.com/ndk/guides/android_mk.html">https://developer.android.com/ndk/guides/android_mk.html</a>). </pre><pre style="font-family:"dejavu sans mono";font-size:9pt">I cannot find any way of calling the strace executable in java class, as for shared library we can use System.loadlibrary(strace).</pre><pre style="font-family:"dejavu sans mono";font-size:9pt">Can anyone suggest me the solution?</pre><pre style="font-family:"dejavu sans mono";font-size:9pt">Thanks in advance.</pre><pre style="font-family:"dejavu sans mono";font-size:9pt">Saba Arshad</pre><pre style="font-family:"dejavu sans mono";font-size:9pt"><br></pre></pre></pre></div></div>