Using Strace

Ubuntu 20.04 安装 MongoDB 失败的根源与排错地图 MongoDB 是一款面向文档的开源 NoSQL 数据库,其部署依赖于操作系统底层机制的协同。在 Ubuntu 20.04 中,AppArmor 安全策略与 systemd 服务管理模型共同构成了关键运行约束:AppArmor 默认限制 mongod 进程仅能访问预设路径,一旦自定义 dbPath 或日志目录即触发静默拒绝;systemd 则因 $OPTIONS 变量未初始化及 apt 不修复目录权限,导致服务启动失败或权限拒绝。这些机制级冲突远超配置语法错误,直接决定部署成败。典型应用场景包括开发环境快速 阅读详情

Using Strace

Strace enables you to see the system calls a process makes and what those system calls return.

 

Building strace

To build strace, run the following:

mmma -j6 external/strace

 

Attaching to a running process

The simplest and most common use case for strace is to attach it to a running process, which you can do with:

adb shell strace -f -p PID

The -f flag tells strace to attach to all the threads in the process, plus any new threads spawned later.

A typical process makes a lot of system calls, so you'll want to review the strace man page to learn how to collect only data you're actually interested in.

 

Using on an application

To use strace on an application:

Set up the device so that you can run strace. You need to be root, disable SELinux, and restart the runtime to remove the seccomp filter that will otherwise prevent strace from running:

adb root
adb shell setenforce 0
adb shell stop
adb shell start

Set up a world-writable directory for strace logs, because strace will be running under the app's uid:

adb shell mkdir -m 777 /data/local/tmp/strace

Choose the process to trace and launch it:
adb shell setprop wrap.com.android.calendar '"logwrapper strace -f -o /data/local/tmp/strace/strace.com.android.calendar.txt"'

Launch the process normally.


Using on the zygote

To use strace on the zygote, fix the relevant init.rc zygote line (requires adb shell setenforce 0):

cd system/core/
patch -p1 <<EOF
--- a/rootdir/init.zygote32.rc
+++ b/rootdir/init.zygote32.rc
@@ -1,4 +1,4 @@
-service zygote /system/bin/app_process -Xzygote /system/bin --zygote --start-system-server
+service zygote /system/bin/strace -o /data/local/tmp/zygote.strace /system/bin/app_process -Xzygote /system/bin --zygote --start-system-server
     class main
     socket zygote stream 660 root system
     onrestart write /sys/android_power/request_state wake
EOF

 

Getting strace logs during Android boot

To get strace logs during Android boot, make the following changes:

Since the process name changes from zygote to strace, the given service may fail to start due to the missing SELinux file_context for strace. The solution is to add a new line for strace in system/sepolicy/private/file_contexts and copy the original file context over. Example:

/dev/socket/zygote      u:object_r:zygote_socket:s0
+ /system/bin/strace u:object_r:zygote_socket:s0

Add kernel command, then boot the device in SELinux permissive mode. You can do this by adding androidboot.selinux=permissiveto BOARD_KERNEL_CMDLINE. (This variable becomes read-only in build/core/Makefile but is always available under /device/*/BoardConfig.) 

Example for the Pixel (sailfish) device in /device/google/marlin/sailfish/BoardConfig.mk:

- BOARD_KERNEL_CMDLINE := ....  androidboot.hardware=sailfish ...
+BOARD_KERNEL_CMDLINE := ....  androidboot.hardware=sailfish ...  androidboot.selinux=permissive

After making the change, build and flash the boot image and the device will boot in permissive mode.

 

传送门:https://source.android.com/devices/tech/debug/strace

Linux下RS-232串口通信完整排查指南:从硬件识别到应用测试 串口通信作为嵌入式系统和工业设备中经典的数据传输接口,其核心原理是通过异步串行方式在单条数据线上逐位传输数据。在Linux系统中,串口通信的实现依赖于硬件驱动、设备文件系统和终端配置的协同工作。其技术价值在于为设备调试、固件升级和数据采集提供了稳定可靠的底层通信通道,广泛应用于物联网网关、工业控制器和嵌入式开发板等场景。本文聚焦于RS-232串口的实战排查,通过**dmesg驱动检测**和**minicom终端测试**等关键步骤,系统化解决串口“无响应”的常见问题,涵盖权限设置、参数配置和高级诊断工具的使用 阅读详情

相关推荐

交叉编译 strace

strace 是 Linux 环境下的一款程序调试工具,用于监控一个应用程序所使用的系统调用以及它所接收到的系统信息。系统管理员、诊断人员和故障排除人员会发现,它对于解决源代码不易获得的程序问题非常宝贵,因为它们不需要重新编译程序来跟踪它们。strace 的操作是由称为 ptrace 的内核特性实现的。

bluebird_shao的专栏 2057

android strace调试

编译strace 加入编译选项到device.mk: PRODUCT_PACKAGES += strace 触发编译: mmma -j6 external/strace 跟踪进程 adb shell strace -f -p PID -p代表跟踪进程号为PID的进程,-f代表跟踪该进程以及之后fork生成的所有进程。 如果想要把strace的log输出...

程序猿Ricky的日常干货 3527

SFR算法实现详解:从边缘检测到MTF计算的完整流程

本文详细解析了SFR算法从边缘检测到MTF计算的完整流程,包括边缘检测、ESF超采样、LSF差分等关键步骤。通过代码示例和实战经验,帮助开发者高效实现成像系统解析力评估,优化MTF测量精度。适用于摄像头模组调试、工业检测等场景。

Black的专栏 1009

android 跟踪方法调用,Android上利用strace跟踪系统调用

8种机械键盘轴体对比本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?strace 是linux下的调试利器,它被用来跟踪所有的系统调用,打印系统调用的参数和返回值,Android 也支持strace。安装straceAndroid系统并没有自带strace的binary,需要自己编译移植到Android设备中,在Android源码下仅编译strace模块即可1mmma -j6 exter...

weixin_33806859的博客 1855

IT运维必备 开源Urbackup 备份系统部署教程 实战操作

手动添加ip方式检查是否在线 ,linux需要按上述步骤6配置server端地址 不然一直不会进去状态栏。安装依赖sudo apt install -y libcrypto++-dev。补充客户端手动触发备份命令 (一般在服务端操作即可,特殊情况客户端进行操作)修改ubuntu主机名 建议修改为ip 方便上线以ip命名上线。默认客户端安装完毕大概几分钟之内服务端会自动上线。配置客户端指向server端地址。(2)ubuntu 客户端设置。新起一个远程窗口查看配置状态,配置客户端备份文件目录。

qq_34981755的博客 1278

Upwork入门指南:如何创建吸引人的个人资料

本文详细介绍了如何在Upwork上创建并优化个人资料,帮助自由职业者吸引更多客户。内容包括: 注册与验证:从注册账号到邮箱验证的完整步骤。 个人资料填写:如何撰写吸引人的标题、简介,选择技能标签,以及设置专业头像和费率。 作品集与优化:上传高质量作品集,提升搜索排名和客户信任度。 常见问题解答:解决新手常见问题,如无工作经验或审核不通过。 通过本文的指导,你将学会打造一个专业且高效的个人资料,为在Upwork上获得更多机会奠定基础。

qq_61813593的博客 3510

android 调试利器之 strace

strace 是linux下的调试利器;debug居家必备 strace可以跟踪所有的系统调用,打印系统调用的参数和返回值; strace还可以指定跟踪子线程/子进程,这是调试多线程程序必须的; andriod 使用了linux操作系统,strace当然是好用的; strace本身不依赖于系统,从一个机器拷贝到另一个机器直接能用;可以看到,strace 只依赖三个最基本的库:

sylin的专栏 1万+

支付宝h5参数如何实现跳转?(包含相关Demo代码)

🏆本文收录于专栏,主要记录项目实战过程中所遇到的Bug或因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家!持续更新中,up!up!up!!

**My Coding Family** 3242

strace java_使用 strace  |  Android 开源项目  |  Android Open Source Project

通过 strace,您可以看到进程发出的系统调用,以及这些系统调用返回的内容。编译 strace要构建 strace,请运行以下命令:mmma -j6 external/strace附加到正在运行的进程对于 strace,最简单和最常见的用例即是附加到正在运行的进程,方法是使用下面这行命令:adb shell strace -f -p PID-f 标记告诉 strace 应附加到相应进程中的所有现...

weixin_42381087的博客 403

[个人自用,全网最优]EDEM-FLUENT个人自学教程,拒绝手忙脚乱无用功!

[个人自用,全网最优]EDEM-FLUENT个人自学教程,拒绝手忙脚乱无用功!

zheaa的博客 4826

HTML蓝色动态爱心(完整代码)

HTML语言实现蓝色动态爱心的完整代码。

AIGC 8万+

strace路径

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34212762的博客 201

基于STM32设计的智能手环(ESP8266+华为云IOT)_178

为了满足用户对健康监测的需求,手环项目集成了血氧检测、心率检测、体温检测等功能。这些功能采用了专门的传感器模块,如MAX30102、DS18B20等,确保了测量数据的准确性和可靠性。同时,为了方便用户了解自己的运动情况,项目还加入了行走步数统计功能,通过MPU6050模块实现精确计步。

2400

5 simple ways to troubleshoot using Strace

I keep being surprised how few people are aware of all the things they can use strace for. It's always one of the first debug tools I pull out, because it's usually available on the Linux systems I ru...

redenval的专栏 566

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

2.4. Effects and Issues of Using strace

2.4. Effects and Issues of Using strace The strace tool is somewhat intrusive (although it isn’t too bad). It will slow down the traced process, and it may also wake up a sleeping process if the proc...

mounter625的专栏 167

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Using strace to monitor SSH connections on Linux

Using strace to monitor SSH connections on Linux Posted @ 4/7/2014 by Kevin Burns | Files in NetsPWN As a penetration tester, I like to avoid replacing binaries on running systems as it makes it

Nixawk 954

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

记一次 .NET 某智慧医保云服务Linux 非托管泄露分析

SafeHandle。

AV3CiHY59的博客 206

HAProxy排错全链路指南:从systemctl失败到strace深挖

HAProxy作为主流开源负载均衡器,其故障往往不表现为明显报错,而是systemd状态异常、日志缺失或CPU飙升等‘静默失效’现象。本质是配置层、内核层与权限层的隐性冲突——如daemon模式与systemd生命周期管理不兼容、rsyslog日志管道中断、PCRE正则回溯爆炸、SELinux策略拦截等。掌握journalctl精准定位启动瞬间ALERT日志、haproxy前台验证配置有效性、rsyslog设施级日志路由配置、以及strace+lsof系统调用级诊断,是构建高可用负载均衡架构的技术基石。本文

circularr9834的博客 447

使用truss、strace或ltrace诊断软件的"疑难杂症"

简介 进程无法启动,软件运行速度突然变慢,程序的"Segment Fault"等等都是让每个Unix系统用户头痛的问题,本文通过三个实际案例演示如何使用truss、strace和ltrace这三个常用的调试工具来快速诊断软件的"疑难杂症"。 truss和strace用来跟踪一个进程的系统调用或信号产生的情况,而 ltrace用来跟踪进程调用库函数的情况。truss是早期为Syst...

weixin_30840573的博客 98

Linux系统运维排故思路参考手册

Linux运维过程中,我们会遇到一些进程突然出现挂死的状态(即进程处于运行状态,但无法处理请求,比如会报404,但这时服务端口是通的,日志也没显示明显异常,有的会简单给出无法连接某个组件,比如数据库等),那这时我们如何定位排查问题呢,偶然间看到网上一位同学的文章,这里分享一下。

企业实战系列集 ●●● https://ximenjianxue.blog.youkuaiyun.com 7573

Linux报错信息优化:从晦涩到清晰的诊断与修复实践

在Linux系统管理与软件开发中,错误处理机制是保障系统稳定性和可维护性的核心环节。其原理基于内核系统调用、C库错误码转换及应用程序的异常处理逻辑,共同构成了错误信息的传递链条。清晰、准确的错误提示不仅能提升调试效率,还能降低系统运维的学习门槛,具有重要的技术价值。在实际应用场景中,开发者常遇到因依赖缺失、编译选项配置不当或错误处理逻辑不完善导致的晦涩报错,例如tar命令因缺少gzip组件而输出误导信息,或动态链接库加载失败等问题。通过结合strace系统调用跟踪与源码分析,可以定位错误根源,并采取升级软件

weixin_34262482的博客 316

Peeking into Linux kernel-land using /proc filesystem for quick’n’dirty troubleshooting

Peeking into Linux kernel-land using /proc filesystem for quick’n’dirty troubleshooting by Tanel Poder Posted on February 21, 2013 This blog entry is about modern Linuxes. In other words RHEL6

ganggexiongqi的专栏 1089

嵌入式Linux Shell脚本进阶:从资源优化到实战移植的工程实践

Shell脚本作为Linux系统管理与自动化的核心工具,其本质是通过命令行解释器执行一系列预定义指令,实现任务流程的自动化。其工作原理基于进程创建、环境变量和管道机制,将多个简单命令组合成复杂逻辑。在嵌入式开发领域,Shell脚本的技术价值尤为凸显,它能高效管理资源受限环境下的系统配置、软件编译和部署流程。通过自动化重复操作和错误处理,脚本显著提升了开发效率和系统可靠性。在嵌入式Linux应用场景中,Shell脚本常用于启动初始化、日志分析、交叉编译环境搭建以及软件包移植。例如,在解决类似“linux移植e

weixin_33861800的博客 346
上一篇: 使用Android工具SDK中的monitor抓CPU线程
下一篇: Using GDB
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值