Tag: systrace

LD_PRELOAD不能拦截系统调用,而只能拦截libcalls?

我的代码适用于malloc ,但不适用于mmap 。 代码如下: main.c中 #include #include int main(){ int * p = (int*) malloc(sizeof(int)); printf(“in main(): value p = %d\n”, *p); free(p); } preload.c #define _GNU_SOURCE #include #include #include #include void *(*orig_malloc)(size_t size); void *malloc(size_t size){ printf(” Hooked(preload)! malloc:size:%lu\n”, size); return orig_malloc(size); } void * (*orig_mmap)(void *start, size_t length, int prot, int flags, int […]

是否可以直接从本机代码记录Android systrace事件,而不使用JNI?

Android systrace日志记录系统非常棒,但它只能在代码的Java部分工作,通过Trace.beginSection()和Trace.endSection() 。 在代码的C / C ++ NDK(本机)部分中,它只能通过JNI使用,JNI在没有Java环境的线程中很慢或不可用… 是否有任何方法可以将事件添加到主systrace跟踪缓冲区,甚至从本机C代码生成单独的日志? 这个较老的问题提到atrace / ftrace是Android的systrace使用的内部系统。 这可以(轻松)进入吗? BONUS TWIST:由于跟踪调用通常位于性能关键部分,理想情况下应该可以在实际事件时间之后运行调用。 即我一个人宁愿能够指定记录的时间,而不是自己轮询的呼叫。 但那只会锦上添花。