【linux-ptrace’ing多线程应用程序】教程文章相关的互联网学习教程文章

Linux神器strace的使用方法及实践【代码】【图】

在Linux系统中,strace命令是一个集诊断、调试、统计与一体的工具,可用来追踪调试程序,能够与其他命令搭配使用,接下来就Linux系统调用工具strace的使用方法和实践给大家做个详细介绍,一起来了解下strace的操作实例吧。 【场景】 1、在操作系统运维中会出现程序或系统命令运行失败,通过报错和日志无法定位问题根因。 2、如何在没有内核或程序代码的情况下查看系统调用的过程。 【说明】 1、strace是有用的诊断,说明和调试工具...

traceroute在linux中的使用方法【代码】【图】

traceroute在linux中的使用方法一、traceroute的实现原理 二、traceroute命令使用方法1、命令格式 2、常用命令参数 3、使用实例 一、traceroute的实现原理 1、IP协议利用存活时间TTL来发出探测包跟踪数据包到达目标ip主机所经历的路由网关数量,每经过一个路由器,TTL的值就减去1。当TTL值为0时,主机就取消发送数据包,并回传一份ICMP报文。 2、在linux系统中,traceroute 命令利用ICMP协议实现定位本地计算机与目标计算机进行网络...

如何使Linux内核函数可用于ftrace?【代码】

我想跟踪一些在挂起/恢复期间调用的内核模块中的函数. 这些功能确实出现在“ available_filter_functions”中. 这就是我配置ftrace的方式:echo nop > current_tracer echo fun_suspend > set_ftrace_filter echo fun_resume > set_ftrace_filter echo function_graph > current_tracer当我暂停/恢复机器时,肯定会调用这些功能(我看到日志)但未出现在cat跟踪中 有人有什么主意吗? 谢谢, 马蒂解决方法:我要测量的功能处于暂停恢复流...

linux-gdb backtrace和pthread_cond_wait()【代码】

这是在使用gcc 4.1.2和gdb 7.0且具有2.6.18-164.2.1.el5 x86_64内核的Redhat EL5计算机上. 当我使用gdb运行应用程序并在其运行时插入时,执行回溯时,我的多个线程会显示以下调用堆栈:#0 0x000000000051d7da in pthread_cond_wait () #1 0x0000000100000000 in ?? () #2 0x0000000000c1c3b0 in ?? () #3 0x0000000000c1c448 in ?? () #4 0x00000000000007dd in ?? () #5 0x000000000051d630 in ?? () #6 0x00007fffffffdc90 ...

linux-从xtrace隐藏命令【代码】

有没有办法在(设置-o xtrace)为xtrace的情况下从输出中隐藏命令? 在DOS中,该技术是打开回显,但在隐藏的命令前加上@符号.解决方法:我从未在bash中见过类似的技巧,但有时您可以使用子shell来临时启用对您感兴趣的命令的跟踪:echo "This command is not traced" (set -xecho "This command is traced" ) echo "No longer traced"如果子外壳由于您要修改环境而不合适,则可以先设置-x然后再设置x,但这将导致您跟踪set x命令的工件.

linux-如何使用ftrace跟踪shell命令的所有事件?【代码】

如何使用ftrace工具跟踪cp file1 file2之类的命令? 我想查看使用cp file1 file2时调用的所有函数,但我不知道该怎么做.谁能帮助我,并在执行该操作的终端上写下确切的命令?解决方法:使用以下脚本,您可以使用它来跟踪所需的任何命令.取自here,我稍作修改,可以在/tmp/mytrace.txt获得跟踪的输出.用法示例:script.sh cp file1 file2#!/bin/bash DPATH="/sys/kernel/debug/tracing" PID=$$ TEMP="/tmp/mytrace.txt" ## Quick bas...

linux-ptrace’ing多线程应用程序【代码】

我有一个类似“调试器”的应用程序,名为hyper-ptrace.它启动与NPTL多线程的user_appl3. hyper-ptrace的主循环是:wait3(&status, FLAGS, &u); // find a pid of child, which has a signal switch (signal = WSTOPSIG(status)) {case SIGTRAP:do_some_analysis_of_the_child(pid, &status) // up to several msbreak; } ptrace(PTRACE_CONT, pid); // discard signal, user_appl3 doesn't know anything //about this SIGTRAPSIGTR...

Linux strace命令(转载)【代码】

简介 strace常用来跟踪进程执行时的系统调用和所接收的信号。 在Linux世界,进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必须由用户态模式切换至内核态模式,通 过系统调用访问硬件设备。strace可以跟踪到一个进程产生的系统调用,包括参数,返回值,执行消耗的时间。 输出参数含义root@ubuntu:/usr# strace cat /dev/null execve("/bin/cat", ["cat", "/dev/null"], [/* 22 vars */...

java – .jar适用于Windows但不适用于Linux(stacktrace)【代码】

这就是我得到的:[user@localhost KioskMenu]$java -jar ./kioskmenu.jar Exception in thread "main" java.lang.ClassFormatError: KioskMenu (unrecognized class file version)at java.lang.VMClassLoader.defineClass(libgcj.so.7rh)at java.lang.ClassLoader.defineClass(libgcj.so.7rh)at java.security.SecureClassLoader.defineClass(libgcj.so.7rh)at java.net.URLClassLoader.findClass(libgcj.so.7rh)at gnu.gcj.runti...

Linux命令之traceroute

通过traceroute我们可以知道信息从你的计算机到互联网另一端的主机是走的什么路径。当然每次数据包由某一同样的出发点(source)到达某一同样的目的地(destination)走的路径可能会不一样,但基本上来说大部分时候所走的路由是相同的。linux系统中,我们称之为traceroute,在MS Windows中为tracert。 traceroute通过发送小的数据包到目的设备直到其返回,来测量其需要多长时间。一条路径上的每个设备traceroute要测3次。输出结果中包...

linux – 解释在开放系统调用的strace上显示的时间【代码】

我们在供应商应用程序中遇到延迟问题.我在这个过程中运行了一个strace -Tttt并得到了这个:[...] 1470166748.946144 open("/opt/app/shdbrth/X ", O_RDONLY) = -1 ENOENT (No such file or directory) <0.000016> 1470166800.850979 open("/opt/app/shdbrth/X38347", O_WRONLY|O_CREAT|O_TRUNC, 0666) = 10 <0.000070> 1470166800.851139 fstat(10, {st_mode=S_IFREG|0660, st_size=0, ...}) = 0 <0.000006> [...]根据manpag...

linux – 理解这个strace输出【代码】

谁能理解这个strace输出?[pid 25302] read(34, "}B\311\204\n\250\347$\220\266kRb\304a^^\2504\303k\235\227T\223\16\231\306\277\254\256\306", 32) = 32它来自通过Tomcat运行Java应用程序的Linux系统.它试图读取一些东西,但它没有文件名,而是有这个奇怪的字符串.这是我认为应用程序失败的地方,这是我不理解的部分.解决方法:read系统调用从打开的文件中读取一些字节. “奇数字符串”是调用读取的字节.该调用尝试从文件描述符34读...

linux – 如何将ftrace精度提高到微秒?【代码】

我正在尝试在Android环境中生成FTrace文件,使用:root@adroid:# echo 1 > /sys/kernel/debug/tracing/events/sched/sched_switch/enable root@adroid:# echo 1 > /sys/kernel/debug/tracing/tracing_on root@adroid:# cat /sys/kernel/debug/tracing/trace > mytracefile.txt root@adroid:# echo 0 > /sys/kernel/debug/tracing/tracing_on root@adroid:# echo 0 > /sys/kernel/debug/tracing/events/sched/sched_switch/enable问题...

linux – blktrace如何工作?【代码】

我正在尝试理解Linux阻止层,所以我正在写一篇关于它的博客:http://www.linuxintro.org/wiki/blktrAce.当这样调用blktrace时:blktrace -d /dev/sdg -o - | blkparse -i -我看到,例如输出8,96 4 695 430.080106382 2356 I N 0 (00 ..) [kworker/4:2] 8,96 3 29 430.082179440 53 D N 0 (00 ..) [ksoftirqd/3]我不明白这意味着什么.根据blkparse的手册页,有一个RWBS字段(包含R表示读取,W表示写入,B表示...

linux – 无法使用strace捕获文件创建【代码】

当我在构建目录中运行以下make命令时,它几乎是空的(有问题的文件肯定不存在) strace -f -e trace = execve,vfork,open,creat -s 1024 make< target> 完成后,文件完全在那里.因此它必须由make或其子进程(或其子进程的子进程等)创建. 但是,当我在strace日志中查找文件名或者对于creat时,我找不到负责创建此文件的系统调用. 我错过了什么?我应该监控其他系统调用吗? 编辑: 事实证明,错误发生在我的strace comamnd和我的grepping中....