linux中程序调试的方法有哪些
发布时间 - 2019-12-06 00:00:00 点击率:次1、使用'print' 语句
这是一个基本的调试问题的方法。 我们在程序中怀疑的地方插入print语句来了解程序的运行流程控制流和变量值的改变。
它的缺点是需要进行程序编辑,添加'print'语句,必须重新编译,重新运行来获得输出。若需要调试的程序比较大,这将是一个耗时费力的方法。
2、使用查询
在某些情况下,我们需要弄清楚在一个运行在内核中的进程的状态和内存映射。为了获得这些信息,我们不需要在内核中插入任何代码。 相反,可以用 /proc文件系统。在/proc的伪文件系统,保留系统启动运行就收集的运行信息 (cpu信息, 内存容量等)。
ls -l /proc的输出结果,通过对系统中运行的每一个进程在/proc文件系统中有一个以进程id命名的项。每个进程的细节信息可以在进程id对应的目录下的文件中获得。也可以'ls /proc/pid'的输出。
免费视频教程推荐:linux视频教程
3、使用跟踪
strace的和ltrace是两个在Linux中用来追踪程序的执行细节的跟踪工具。
strace:
strace拦截和记录系统调用及其接收的信号。对于用户,它显示了系统调用、传递给它们的参数和返回值。strace可以附着到已在运行的进程或一个新的进程。它作为一个针对开发者和系统管理员的诊断、调试工具是很有用的。
它也可以用来当做一个通过跟踪不同的程序调用来了解系统的工具。这个工具的好处是不需要源代码,程序也不需要重新编译。
使用strace的基本语法是:
strace 命令
strace的输出非常长,我们通常不会对显示的每一行都感兴趣。我们可以用'-e expr'选项来过滤不想要的数据。
用 '-p pid' 选项来绑到运行中的进程。
用'-o'选项,命令的输出可以被重定向到文件。
strace过滤成只有系统调用的输出。
ltrace:
ltrace跟踪和记录一个进程的动态(运行时)库的调用及其收到的信号。它也可以跟踪一个进程所作的系统调用。它的用法是类似与strace。
ltrace command
'-i' 选项在调用库时打印指令指针。
'-S' 选项被用来现实系统调用和库调用.
trace捕捉'STRCMP'库调用的输出。
相关文章教程推荐:linux教程
# linux
# print
# 指针
# 可以用
# 文件系统
# 它也
# 是一个
# 也不
# 不需要
# 中有
# 要在
# 感兴趣
# 这是一个
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
node.js报错:Cannot find module 'ejs'的解决办法
如何注册花生壳免费域名并搭建个人网站?
制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?
javascript日期怎么处理_如何格式化输出
Laravel中间件起什么作用_Laravel Middleware请求生命周期与自定义详解
如何快速搭建二级域名独立网站?
想要更高端的建设网站,这些原则一定要坚持!
LinuxShell函数封装方法_脚本复用设计思路【教程】
如何用AI帮你把自己的生活经历写成一个有趣的故事?
Laravel的契約(Contracts)是什么_深入理解Laravel Contracts与依赖倒置
Laravel怎么使用Collection集合方法_Laravel数组操作高级函数pluck与map【手册】
阿里云网站搭建费用解析:服务器价格与建站成本优化指南
成都品牌网站制作公司,成都营业执照年报网上怎么办理?
bootstrap日历插件datetimepicker使用方法
如何快速上传自定义模板至建站之星?
手机网站制作与建设方案,手机网站如何建设?
如何打造高效商业网站?建站目的决定转化率
Python函数文档自动校验_规范解析【教程】
Laravel如何使用Collections进行数据处理?(实用方法示例)
Laravel怎么做缓存_Laravel Cache系统提升应用速度的策略与技巧
Laravel任务队列怎么用_Laravel Queues异步处理任务提升应用性能
Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】
湖南网站制作公司,湖南上善若水科技有限公司做什么的?
大学网站设计制作软件有哪些,如何将网站制作成自己app?
PHP 实现电台节目表的智能时间匹配与今日/明日轮播逻辑
laravel怎么使用数据库工厂(Factory)生成带有关联模型的数据_laravel Factory生成关联数据方法
如何续费美橙建站之星域名及服务?
Android仿QQ列表左滑删除操作
图册素材网站设计制作软件,图册的导出方式有几种?
网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?
详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)
如何在阿里云服务器自主搭建网站?
如何基于云服务器快速搭建个人网站?
Windows10怎样连接蓝牙设备_Windows10蓝牙连接步骤【教程】
Laravel如何使用Socialite实现第三方登录?(微信/GitHub示例)
香港网站服务器数量如何影响SEO优化效果?
实例解析angularjs的filter过滤器
Swift中swift中的switch 语句
智能起名网站制作软件有哪些,制作logo的软件?
移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?
如何在香港免费服务器上快速搭建网站?
Python图片处理进阶教程_Pillow滤镜与图像增强
标题:Vue + Vuex + JWT 身份认证的正确实践与常见误区解析
如何在企业微信快速生成手机电脑官网?
javascript中数组(Array)对象和字符串(String)对象的常用方法总结
php静态变量怎么调试_php静态变量作用域调试技巧【解答】
详解jQuery中基本的动画方法
html5源代码发行怎么设置权限_访问权限控制方法与实践【指南】
php嵌入式断网后怎么恢复_php检测网络重连并恢复硬件控制【操作】
Python结构化数据采集_字段抽取解析【教程】

