随笔分类 -  Linux系统

Uid和Gid
摘要:1. Android中Uid定义在 Process.java 中 //frameworks/base/core/java/android/os/Process.java public class Process { public static final int ROOT_UID = 0; //De 阅读全文

posted @ 2023-01-17 14:38 Hello-World3 阅读(154) 评论(0) 推荐(0) 编辑

tracer ftrace笔记(12)—— trace文档翻译与实验——/sys/kernel/tracing/README
摘要:基于 Linux-5.10.110 一、翻译 /sys/kernel/tracing # cat README tracing mini-HOWTO: # echo 0 > tracing_on //禁用trace的快速方法# echo 1 > tracing_on //重新启用trace的快速方法 阅读全文

posted @ 2023-01-16 13:00 Hello-World3 阅读(721) 评论(0) 推荐(0) 编辑

GDB-5——gdb tui在gdb中显示程序源码
摘要:一、简介 gdb 在调试的时候不能很好的展示源码。gdb 里面可以用 list 命令显示源码,但是 list 命令显示没有代码高亮,也不能一眼定位到正在执行的那行代码在整个代码中的位置。可以使用 gdb 自带的 gdbtui。 二、使用方法 1. 开启gdb tui模式 方法一:使用 gdbtui 阅读全文

posted @ 2022-11-08 11:57 Hello-World3 阅读(1605) 评论(0) 推荐(0) 编辑

GDB-4——Android设备中使用GDB调试程序的例子
摘要:一、一个简单的例子 1. 实验Demo (1) Android.mk LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_SRC_FILES:= mytest.c LOCAL_MODULE:= mytest LOCAL_C_FLAGS + 阅读全文

posted @ 2022-11-08 11:54 Hello-World3 阅读(471) 评论(0) 推荐(0) 编辑

GDB-3——GDB实用调试技巧
摘要:1. 将 print 显示的字符串或字符数组显示完整 当我们使用 print 命令打印一个字符串或者字符数组时,如果该字符串太长,print 命令默认显示不全的,我们可以通过在 gdb 中输入 set print element 0 设置一下,这样再次使用 print 命令就能完整地显示该变量所有字 阅读全文

posted @ 2022-11-08 11:51 Hello-World3 阅读(748) 评论(0) 推荐(0) 编辑

GDB-2——GDB调试多线程
摘要:一、简介 前一博文实际上已经介绍了多线程的调试方法,这节专门进行一下总结。 二、调试多线程 1. 使用 gdb 将程序跑起来,然后按 Ctrl + C 将程序中断下来,使用 info threads 命令查看当前进程有多少线程。 2. 使用 thread <线程编号> 可以切换到对应的线程,然后使用 阅读全文

posted @ 2022-11-08 11:46 Hello-World3 阅读(3779) 评论(0) 推荐(1) 编辑

GDB-1——GDB初探
摘要:一、GDB简介 在 Linux 编程中,通常使用 gdb 来调试 C/C++ 应用程序。若想调试内核可以使用GTAG(不方便,需要硬件上飞线)或使用Qemu,清华大学相关网址上有介绍Qemu是怎么配置的。 二、给被调试程序加调试信息 1. gcc 编译程序时加上 -g 编译选项以便能晰地看到调试的每 阅读全文

posted @ 2022-11-08 11:42 Hello-World3 阅读(648) 评论(0) 推荐(1) 编辑

timerslack 与 sleep()/usleep()
摘要:一、简介 1. timerslack 是 Linux 系统为了降低系统功耗,避免 timer 时间参差不齐,过于的频繁的唤醒 cpu,而设置的一种对齐策略。内核中将相近的定时器到期时间汇聚在一起,这会导致到期时间比定时时间晚一些(但不会提前)。 2. 会被timer slack到期时间影响的函数集有 阅读全文

posted @ 2022-10-19 22:34 Hello-World3 阅读(931) 评论(0) 推荐(0) 编辑

tracer ftrace笔记(10)—— trace内容分析
摘要:基于Linux-5.10 一、trace打印格式 1. 在把 raw trace 数据格式化成用户可读的形式时,trace数据分成两部分:一部分是 common 信息,一部分是用户自定义的 trace 信息,这两部分分开格式化。 common信息: 这部分有系统根据当前是 “Normal forma 阅读全文

posted @ 2022-10-11 16:57 Hello-World3 阅读(907) 评论(0) 推荐(0) 编辑

tracer ftrace笔记(9)—— TRACE_EVENT 初始化
摘要:基于Linux-5.10 一、内核启动时遍历 trace_event_call 初始化流程 1. TRACE_EVENT()多次展开定义了各种实现函数以后,最终把本 event 的所有的函数和数据存放在一个类型为 struct trace_event_call 的顶层变量中,并且会把指针存放到 se 阅读全文

posted @ 2022-10-11 16:22 Hello-World3 阅读(531) 评论(0) 推荐(0) 编辑

kptr_restrict 内核文件简介
摘要:一、简介 系统为了保护内核符号地址不被泄露, 而用的一种保护手段, 从而使除 root 用户外的普通用户不能直接查看符号地址。原因在于内核文件 kallsyms.c 中的显示符号地址命令中做了如下限制: seq_printf(m, "%pK %c %s\n", (void *)iter->value 阅读全文

posted @ 2022-07-11 21:28 Hello-World3 阅读(1433) 评论(0) 推荐(0) 编辑

导航