linux相关
文章平均质量分 88
freudlv
这个作者很懒,什么都没留下…
展开
-
性能优化(2.CPU上下文切换)
性能优化(2.CPU上下文切换)概述Linux 是一个多任务操作系统,它支持大于 CPU 数量的任务同时运行。实际上,这些任务并不是真的在同时运行,只是系统在很短的时间内,将 CPU 轮流分配给它们,造成多任务同时运行的错觉。每个任务运行前,CPU 都需要知道任务从哪里加载、从哪里开始运行,也就是说,需要系统事先帮每个任务设置好 CPU 寄存器和程序计数器。上下文CPU 寄存器,是 CPU 内置的容量小、但速度极快的内存。程序计数器,则是用来存储 CPU 正在执行的指令位置、或者即将执行的下一原创 2021-09-12 09:30:04 · 396 阅读 · 1 评论 -
性能优化(1. CPU分析工具)
性能优化(1. CPU分析工具)关于本系列性能优化的系列文章,主要的信息来源是:《性能之巅》(Brendan Gregg)以及《Linux性能优化实战》(倪朋飞)。本系列的计划是,前几部分讲述相关工具,后面讲述工具如何使用,在遇到问题的时候的一些分析套路。概述性能是对整个系统的研究,包括了所有的硬件组件和整个软件栈。性能优化是个系统工程,总是牵一发而动全身。它涉及了从程序设计、算法分析、编程语言,再到系统、存储、网络等各种底层基础设施的方方面面。每一个组件都有可能出问题,而且很有可能多个组件同时原创 2021-09-12 09:29:28 · 620 阅读 · 0 评论 -
读书笔记《Debug Hacks --调试技术与工具》(4-GDB调试(三))
历史值print变量的时候,显示过的值会记录在内部的历史中。可以通过print $n 访问历史变量,比如下面的例子,p变量后,可以观察前面有 $1, 后续指令中,$1 就是指这个变量:(gdb) p arrToSearch$1 = {0, 0, 0, 0, 4195936, 0, 4195440, 0, -6960, 32767, 0}历史命令在一个会话中,使用的命令,可以保存起来,用于下一个gdb会话。以下指令为:设置指令历史扩展,保存历史文件,保存历史记录,设置命令历史数量:set原创 2020-06-15 23:36:38 · 262 阅读 · 0 评论 -
读书笔记《Debug Hacks --调试技术与工具》(3-GDB调试(二))
attach到进程对于已经在运行的程序,可以使用指令attach进行附着程序调试,格式 attach 程序运行后,查阅PID,然后gdb启动:[root@localhost gdbTest]# ps PID TTY TIME CMD 8194 pts/0 00:00:00 bash 9108 pts/0 00:00:00 su 9111 pts/0 00:00:00 bash 9208 pts/0 00:00:02 a.out 920原创 2020-06-15 00:18:08 · 174 阅读 · 0 评论 -
读书笔记《Debug Hacks --调试技术与工具》(2-GDB调试(一))
本文涉及的主要用法:设置/删除断点;显示栈调用;显示/设置变量值;生成coredump文件;查看内存地址。要调试的源码#include "stdio.h"static int binarySearch(int array[], int len, int key){ int left = 0; int right = len - 1; while (left <= right) { int mid = (left + right) / 2;原创 2020-06-11 22:32:41 · 356 阅读 · 0 评论 -
读书笔记《Debug Hacks --调试技术与工具》(1-进程的内核转储)
读书笔记《Debug Hacks --调试技术与工具》(1-进程的内核转储)内核转储(core dump)可以保存问题发生时的状态。只要获取内核转储,即使没有复现的环境,也能够调试。启动内核转储shell指令(查看当前的内核转储功能是否有效):ulimit -c如果上例中的限制为0,则转储无效。需要做如下设置(不做限制,或者限制转储文件最大1G):ulimit -c unlimited或者ulimit -c 1073741824生成转储文件开启转储功能后,尝试生成转储文件,比如,运原创 2020-06-10 00:41:04 · 186 阅读 · 0 评论 -
读书笔记《Debug Hacks --调试技术与工具》(0-概述)
Debug是非常个性化的工作,但是有效的debug方法,解决问题的思路毫无疑问是建立在对系统,应用的理解上。程序从编码到运行,有语法/编译问题,以及运行的问题。本系列的读书笔记主要讨论运行过程中遇到问题,如何继续调试。从代码到完成,经历的阶段有:需求定义,设计,编码,测试,调试等。编码:对项目进行编译与构建,修改并消灭编译错误与构建错误;测试:发现bug,找出不符合预期的行为。有方法认为编写程序前先写测试程序,TDD,即测试驱动开发。调试:对于给定的输入,确定输出是否符合预期。调试的工具/方原创 2020-05-11 21:57:52 · 225 阅读 · 0 评论 -
Makefile编译时怎么打印出变量值
$(warning $(DVD_SERVICE)) // DVD_SerVICE是Makefile中的变量$(warning ST40_IMPORTS is $(ST40_IMPORTS)) 变量名,一定要加括号。不加的话,可以发现前面都无法输出变量的值。1、输出打印信息的方法是:$(warning xxxxx),$(error xxxxx)2、输出打印转载 2017-05-09 19:48:15 · 6859 阅读 · 0 评论 -
linux下如何进入单人维护模式,忘记密码的解决方法
linux下如何进入单人维护模式先将系统重新开机,在读秒的时候按下任意键就会出现操作系统的选择画面,仔细看选单底下的说明, 按下『e』就能进入grub的编辑模式了。此時你看到的画面有点像底下这样:root (hd0,0)kernel /vmlinuz-2.6.18-128.el5 ro root=LABEL=/ rhgb quietinitrd /initrd-2.6.18-128转载 2015-06-18 16:16:35 · 6500 阅读 · 1 评论 -
嵌入式Linux系统在命令行(终端界面)的多应用(多任务)切换
近期有部分项目都需要到多应用同时运行,但我对这块没有任何了解。总是零零碎碎地了解,之前本着不全面不总结的想法,反而没进展。现在把了解到的东西写一下,随时补充吧,如果看到这篇文章的你,发现我的理解有误,也请指正。 涉及shell指令:fg bg jobs ps kill 在命令行界面,如果需要一个应用程序在后头运行,则输入 ./testapp1 & 即可。这时候应用程序testapp原创 2013-09-24 11:34:22 · 3027 阅读 · 0 评论 -
VIM 高亮设置
注意可以高亮的是VIM不是VIvi配置:1.在用户目录建立.vimrc[root@hyf ~]$vi .vimrc2.配置.vimrc文件加入syntax on3.保存,重连ssh。搞定vi还有很多个性化的配置可以在.vimrc中加入方便自己工作下面是一个基本的配置set fenc=utf-8 "设定默认解码s转载 2012-06-16 00:15:11 · 1720 阅读 · 0 评论 -
make 2>&1 | tee xxx.log 引发的思考
Background of this post:Recently, I always noticed that many guys can't distinguish the meaning among stdin, stdout, and stderr, especially, they always ask the same question as: what does "2>&1"转载 2012-04-27 23:44:46 · 7747 阅读 · 3 评论