跟踪程序在Linux下的执行的函数调用

<工控><PLC>汇川Easy521系列PLC与汇川SV630N伺服进行EtherCat通讯的相关配置及指令编写 本系列是关于PLC相关的博文,包括PLC编程、PLC与上位机通讯、PLC与下位驱动、仪器仪表等通讯、PLC指令解析等相关内容。PLC品牌包括但不限于西门子、三菱等国外品牌,汇川、信捷等国内品牌。除了PLC为主要内容外,PLC相关元器件如触摸屏(HMI)、交换机等工控产品,如果有值得记录的内容,也会添加进来。 阅读详情

     对于一个程序,通常我们可以使用gdb之类的调用工具设定断点进行调用。然而Linux系统提供了众多的跟踪工具,可以让我们在没有源代码的情况下跟踪程序都执行了哪些系统调用、动态库调用、栈情况以及接收信号等。可以让我们不停止程序来观察程序的执行流程。

      strace 显示执行程序的系统调用及接收信号情况

      strace [strace 选项]  可执行程序 可执行程序参数

      选项说明:

      -o filename 将输出写到文件filename中

      -f 跟踪子进程的执行,适合多线程程序

      -ff 如果使用了-o指定输出文件,则将每个子进程都写入到filename.pid中

      -s strsize,指定最大字串大小,默认为32.

      -r  打印相对时间戳

      -t  打印实际时间 -tt 打印毫秒级 -ttt 打印微秒级时间

      -x 将所有非ASCII字符串显示为十六进制字串

      -xx 将所有字符串显示为十六进制

      -P pid 附着于进程进行跟踪,并在ctrl+c后离开保持被跟踪程序执行。

      -e key=[!]value[,value]或-evalue,只显示value的系统调用

       key包括trace、abbrev、verbose、raw、signal、read、write,value为系统调用的符号。

       例如-e trace=open。默认使用trace=all。

       为了方便使用value定义了一些不同类型的系统调用:file代表所有文件相关调用,process涉及相关进程的调用,network涉及相关网络系统调用,signal代表所有信号相关的系统调用,此外还有ipc,desc。其他的key如abbrev、verbose、raw表示使用什么样的输出方式。signal可以跟踪特定信号集的接收情况。默认为signal=ALL,可以使用SIGIO这种方式。而read/write则可以指定跟踪写特定文件描述符的动作,并将读写数据以十六进制的方式打印出来。例如-e read=3,5

 

       ltrace 显示执行程序的库调用及接收信号情况

       其与strace的使用参数类似,支持-e -f -P -s -t -tt -tt -o -ff等参数,此外它还支持下面的一些参数

       -C --demangle 转换低级编译器的符号令用户易看,例如C++等的mangle操作。

       -l --library libname,lib... 只显示对libname中的库调用

       -S 显示系统调用,-L 不显示库调用

       -n num  当嵌套调用时,进行缩进显示

       对于不同的库中的调用,列于/etc/ltrace.conf文件中

 

        pstack 打印命中时程序的调用栈及相应参数

        pstack pid即可

 

【推荐100个unity插件】基于关节物理控制的自行车、电动车、摩托车模拟解决方案——Simple Bicycle Physics 摘要 "简易自行车物理"是Unity的自行车模拟资源包,支持Animation Rigging,实现基于关节物理的自行车控制。兼容所有平台和渲染管线,包含预制体、材质、脚本等资源。核心脚本Bicycle Controller管理自行车物理属性,支持自定义角色设置和移动端控制。安装后,用户可快速配置骑行场景,调整转向、速度、重心等参数,并支持地面贴合、兔跳等功能。适用于开发各类自行车模拟游戏和应用。 (字数:149) 阅读详情

相关推荐

基于陀螺仪航向反馈的轮式机器人PID直线控制

航向角控制是移动机器人实现稳定直线运动的基础技术,其本质是通过实时感知机体朝向偏差并动态调节驱动输出,以抵消机械不对称、轮径误差等固有扰动。该方法依托陀螺仪测量角速度并积分解算航向角,结合离散化PID算法生成补偿性PWM指令,在嵌入式平台(如STM32)上构建低延迟闭环。相比依赖编码器的速度闭环,它规避了轮径标定与安装偏心等误差源,显著提升低成本平台的工程鲁棒性与部署效率。典型应用场景包括教育机器人直线循迹、AGV基础导航模块开发及IMU-PID融合控制原型验证。

web39explorer的博客 1110

linux下C语言如何得到调用我的函数的文件名和行号

之前有看到一篇帖子,帖子内容如下: /*******************************原文************************/ 引自:http://bbs.youkuaiyun.com/topics/370006942  linux系统下C语言写了一个函数,我想在这个函数里面打印出调用这个函数的文件的文件名和调用所在行的行号。           请不要告诉我用__FILE

qingsss的专栏 3494

【BigWorld 游戏服务器引擎】Cell 架构设计介绍,及Java实现方案的探索

横向扩展(Scalability):通过动态增减CellApp和BaseApp的数量,可以轻松应对玩家人数的变化。世界可以做得非常大,只需增加更多的 Cell。负载分离(Load Separation):将不同性质的负载分离,避免了单一进程瓶颈。CPU 密集型的实时计算(CellApp)和 I/O 密集型的数据操作(BaseApp)互不影响。高效的视野管理(AOI):每个 Cell 只关心自己区域内和边界上的实体,大大降低了计算复杂度。容错性:某个CellApp。

代码时光 1205

Linux系统查看命令行的函数调用栈方法

strace是一个非常强大的Linux系统调用跟踪工具,可以帮助我们调试和分析进程执行过程中的问题。下面介绍一下strace的使用方法。pstack是一个Linux下的进程堆栈跟踪工具,可以显示进程的函数调用栈。perf是一个Linux下的性能分析工具,可以显示进程的函数调用栈。在命令行中执行gdb命令,进入gdb调试工具。其中,为进程的PID。其中,为进程的PID。其中,为进程的PID。

逆风水手的博客 1690

共封装光学(CPO):下一代互联革命

Nvidia:产品:Quantum-X Q3450(115.2T,144×800G,2025H2上市)、Spectrum 6800(409.6T,512×800G,2026H2上市);技术路线:TSMC COUPE封装、MRM调制器、光栅耦合、外部激光源(Lumentum/Ayar Labs供应);战略定位:以横向扩展CPO验证供应链,最终聚焦纵向扩展场景(Feynman架构)。

存储随笔 4962

修复zookeeper未授权访问漏洞

【代码】修复zookeeper未授权访问漏洞。

qq_28392947的博客 4067

在linux中如何调用函数调用函数,gdb 如何调用函数? | Linux 中国

(之前的 gdb 系列文章:gdb 如何工作(2016)[1]和[2])在这周,我发现我可以从 gdb 上调用 C 函数。这看起来很酷,因为在过去我认为 gdb 最多只是一个只读调试工具。我对 gdb 能够调用函数感到很吃惊。正如往常所做的那样,我在Twitter[3]上询问这是如何工作的。我得到了大量的有用答案。我最喜欢的答案是Evan Klitzke 的示例 C 代码[4],它展示了 ...

weixin_35539437的博客 943

Python 爬虫实战:攻克小红书种草笔记,抓取美妆好物推荐数据

通过本次 Python 爬虫实战,我们成功地从小红书爬取了美妆种草笔记的数据,并进行了存储、处理、分析和可视化展示。在这个过程中,我们不仅掌握了爬虫技术的基本应用,还学会了如何对动态加载的数据进行处理和分析。然而,本次爬虫任务也存在一些局限性,例如仅爬取了部分笔记的数据,且未对笔记中的图片和视频内容进行分析。在未来的工作中,我们可以进一步优化爬虫程序,爬取更多笔记的数据,并深入分析笔记中的多媒体内容、用户行为模式等,为美妆品牌和消费者提供更有价值的数据支持。

u014481728的博客 3268

linux查看函数调用情况命令,Linux命令:简单函数调用

脚本编程之函数: function: 功能结构化编程,不能独立运行,需要调用时执行,可以被多次调用1、定义一个函数:function FUNCNAME {command}FUNCNAME() {command}2、自定义函数执行状态返回值:return # (0-255)3、接受参数的函数:./a.sh m n$1: m$2: nTWOINT 5 6$1: 5$2: 6练习1:写一个脚本,自...

weixin_39916379的博客 854

WinClaw安全实战 02|五层纵深防护体系全解析:从原理到实操,打造零风险AI智能体

2026年AI智能体爆发式普及,OpenClaw以27.3万GitHub星标成为现象级工具,但恶意Skill投毒、提示词注入、数据外泄等安全事故频发,国家互联网应急中心、工信部等多部门接连发布风险警示。威努特基于国家关键信息基础设施安全防护经验,打造WinClaw安全版AI智能体,其核心竞争力在于**五层纵深防护体系**。本文从安全痛点切入,通过真实事故案例揭示风险本质,全景解构五层防护的架构设计与技术原理,逐层拆解身份认证、安装审查、消息拦截、执行约束、监控审计的实现逻辑,搭配20+实操演示、对比表格

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 496

R语言机器学习算法实战系列(十一)MLP算法分类器 (Multi-Layer Perceptrons)

本文介绍了多层感知器(MLP)分类算法的原理和计算步骤,并通过R语言实现MLP模型。MLP是一种前馈神经网络,包含输入层、隐藏层和输出层,通过激活函数引入非线性,利用前向传播和反向传播进行训练。文章详细描述了数据预处理、数据切割、模型构建、预测和评估等步骤,并提供了乳腺癌数据集(BreastCancer_clean.csv)的下载链接。通过R包如neuralnet和caret,读者可以逐步实现MLP模型,并评估其分类性能。

专注生信领域 933

linux 跟踪函数调用,跟踪程序在Linux下的执行的函数调用

对于一个程序,通常我们可以使用gdb之类的调用工具设定断点进行调用。然而Linux系统提供了众多的跟踪工具,可以让我们在没有源代码的情况下跟踪程序都执行了哪些系统调用、动态库调用、栈情况以及接收信号等。可以让我们不停止程序来观察程序的执行流程。strace 显示执行程序的系统调用及接收信号情况strace [strace 选项] 可执行程序 可执行程序参数选项说明:-o filename 将输出...

weixin_34313315的博客 654

Debezium报错处理系列之第112篇:Cannot replicate because the master purged required binary logs. Replicate the

Debezium报错处理系列之第112篇:Cannot replicate because the master purged required binary logs.

zhengzaifeidelushang的博客 725

linux 如何跟踪程序来源,跟踪程序在Linux下的执行的函数调用

本篇文章主要是向大家讲述了跟踪程序是如何在Linux下执行的函数调用,作者从基本概念、具体实例方面进行讲解,相信对于Linux的初学者来说会有很大的帮助!对于一个程序,通常我们可以使用gdb之类的调用工具设定断点进行调用。然而Linux系统提供了众多的跟踪工具,可以让我们在没有源代码的情况下跟踪程序都执行了哪些系统调用、动态库调用、栈情况以及接收信号等。可以让我们不停止程序来观察程序的执行流程。s...

weixin_36317317的博客 443

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

linux 跟踪程序执行过程,用pvtrace和Graphviz实现对linux下C程序的函数调用跟踪

用pvtrace和Graphviz实现对linux下C程序的函数调用跟踪用pvtrace和Graphviz实现对linux下C程序的函数调用跟踪1:功能介绍,使用本方法可以实现linux下C应用程序的调用跟踪。对于了解大型的程序的运行过程,和函数的调用情况分析很有帮助。2:用到的开源软件的安装2.1 pvtrace如果你的linux不支持解压*.zip最好在windows下解压后copy到linu...

weixin_42134878的博客 400

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

程序链接借鉴思路

pvtrace和Graphviz实现对linux下C程序的函数调用跟踪(2011): http://blog.chinaunix.net/uid-24567872-id-204396.html pvtrace和Graphviz实现对linux下C程序的函数调用跟踪(2014): http://blog.sina.com.cn/s/blog_67fcf49e0101m06u.html linux下追...

qq_32534441的博客 274

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

[Linux] gdb 单步执行和跟踪函数调用

一、前言 在写程序时,不能保证程序总是正确的,特别是运行时出错的情况。在 Linux 中提供了一个很强大的调试工具 gdb ,可以完全操控程序的运行,能够随时查看程序中所有的内部状态,比如各变量的值、传给函数的参数、 当前执行的代码行等。 无论是否有这样的调试工具,调试的基本思想仍然是 分析现象->假设错误原因->产生新的现象去验证假设 的循环,根据现象来假设错误原因,以及如何设计新的...

shiawaseli的博客 7323

c语言调用graphviz_pvtrace和Graphviz实现对linux下C程序的函数调用跟踪

函数调用跟踪是在C语言开发来,在IDE里面有很多工具实现这个功能,但是,在我们使用vim+gcc+gdb开发程序而言,有一种比较好的方法,下面主要找这个方法:请参看:http://hi.baidu.com/caosicong/blog/item/ef86426dc2c9c1f8431694fb.html第一,安装pvtrace:下载地址:http://www.mtjones.com/develop...

weixin_42363388的博客 276

linux中的可执行二进制文件执行流程(ELF)

LD_PRELOAD,execve,Linux

gzhu_flyingbird的博客 5167

Linux的调试工具 - gdb(超详细)

本文详细介绍了Linux的调试工具gdb,演示了gdb主要使用的调试指令。

指尖动听知识库 330

Linux内核调试技巧 dump_stack()

linux内核提供函数dump_stack()来跟踪函数的调用过程,原理是通过打印当前cpu的堆栈的调用函数来显示当前的上下文环境与调用关系;

houxiaoni01的博客 2058

linux编程之GDB调试

GDB是一套字符界面的程序集,可以用它在linux上调试C和C++程序,它提供了以下的功能: 1 在程序中设置断点,当程序运行到断点处暂停 2 显示变量的值,可以打印或者监视某个变量,将某个变量的值显示出来 3 单步执行 4 运行时修改变量的值 5 跟踪路径 6 线程切换 等等   下面以以下程序为例 当我们要使用GDB进行程序的调试时,在用GCC编译时需要加上-g,如下:...

whatday的专栏 247

linux 逆向分析

总结一下我的对linux 逆向的认识吧, 因为刚开始接触, 一点点的增加吧。;转载注明出处 1 strings  xx  主要是用于查找字符串的信息, 就和ida 的string 窗口一样 2nm   程序调用的函数 t|T – The symbol is present in the .text code section b|B – The symbol is

baidu_28138887的博客 1544

用GDB调试程序

用GDB调试程序 GDB概述 ———— GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在UNIX平台下做软件,你会发现GDB这个调试工具有比VC、BCB的图形化调试器更强大的功能。所谓“寸有所长,尺有所短”就是这个道理。 一般来说,GDB主要帮忙你完成下面四个方面的功能: 1、启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。 2、可让被调试的程序在你所指定的调置的断点处停住。(断点可以是条件表达式) 3

weixin_51478436的博客 341

第19部分- Linux x86 64位汇编GDB单步调试

第19部分- Linux x86 64位汇编GDB单步调试 本篇我们使用gdb来调试上篇中的汇编代码。 gdb调试 使用gdb进行调试。 #gdb ./addsum_arg 设置参数: (gdb) set args 1 1 #启动程序 (gdb) r #查看寄存器 (gdb) i r rcx 可以看到启动进程时候rcs为0. 查看rsp寄存器对应的地址. (gdb) i r rsp rsp 0x7fffffffe3d0 0x7fffffffe3d...

badman250的专栏 1164
上一篇: 如何有效编写软件的75条建议
下一篇: Linu下查看进程打开的文件与打开文件的进程
zzulp
博客等级 码龄19年 464粉丝 176原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值