调试
文章平均质量分 78
Flyhigh
海阔凭鱼跃,天高任鸟飞
展开
-
kprobe和systemtap
内核探测kprobekprobe(内核探测,kernel probe)是一个动态地收集调试和性能信息的工具,如:收集寄存器和全局数据结构等调试信息,无需对Linux内核频繁编译和启动。用户可以在任何内核代码地址进行陷阱,指定调试断点触发时的处理例程。工作机制是:用户指定一个探测点,并把用户定义的处理函数关联到该探测点,当内核执行到该探测点时,相应的关联函数被执行,然后继续执行正常的代码路径原创 2013-04-09 10:19:46 · 3896 阅读 · 0 评论 -
c语言内存泄露示例
存在内存错误的 C 和 C++ 程序会导致各种问题。如果它们泄漏内存,则运行速度会逐渐变慢,并最终停止运行;如果覆盖内存,则会变得非常脆弱,很容易受到恶意用户的攻击。从 1988 年著名的莫里斯蠕虫 攻击到有关 Flash Player 和其他关键的零售级程序的最新安全警报都与缓冲区溢出有关:“大多数计算机安全漏洞都是缓冲区溢出”,Rodney Bates 在 2004 年写道。在可以原创 2013-08-27 19:57:42 · 1739 阅读 · 0 评论 -
关于/usr/bin/env
在linux的一些bash的脚本,需在开头一行指定脚本的解释程序,如:#!/usr/bin/env python再如:#!/usr/bin/env perl#!/usr/bin/env zimbu但有时候也用#!/usr/bin/python和#!/usr/bin/perl那么 env到底有什么用?何时用这个呢?脚本用env启动的原因,是因为脚本解释器在li原创 2013-08-05 16:44:46 · 981 阅读 · 0 评论 -
gcov和lcov代码覆盖率工具
1.GCOV查看arm-linux代码覆盖率 一、 关于gcov工具gcov伴随gcc 发布。gcc编译加入-fprofile-arcs -ftest-coverage 参数生成二进制程序,执行测试用例生成代码覆盖率信息。1、如何使用gcov用GCC编译的时候加上-fprofile-arcs -ftest-coverage选项,链接的时候也加上。fprofi原创 2013-07-31 17:54:18 · 2714 阅读 · 0 评论 -
arping命令
arping是用于发送arp请求到一个相邻主机的工具;arping使用arp数据包,通过ping命令检查设备上的硬件地址。语法:[root@ha01 ~]# arpingUsage: arping [-fqbDUAV] [-c count] [-w timeout] [-I device] [-s source] destination -f : quit on firs原创 2013-06-18 16:02:21 · 1338 阅读 · 0 评论 -
动态切换 Linux 使用的 CPU 数量
动态切换 Linux 使用的 CPU 数量摘要: 由于要测试一些代码,其运行结果会受到多核并行的影响,所以希望能够调整使用的 CPU 数量。网络上之前看到的方法是在内核的启动参数上添加一个 maxcpus,但是如果这样的话每切换一次都要重启一次,是在太麻烦了。想 ...由于要测试一些代码,其运行结果会受到多核并行的影响,所以希望能够调整使用的 CPU 数量。网络上之前看到的方法原创 2013-06-14 16:23:28 · 1546 阅读 · 1 评论 -
指定进程运行的CPU
coolshell最新的文章《性能调优攻略》在“多核CPU调优”章节,提到“我们不能任由操作系统负载均衡,因为我们自己更了解自己的程序,所以,我们可以手动地为其分配CPU核,而不会过多地占用CPU0,或是让我们关键进程和一堆别的进程挤在一起。”。在文章中提到了Linux下的一个工具,taskset,可以设定单个进程运行的CPU。同时,因为最近在看redis的相关资料,redis作为单进程模原创 2013-06-14 10:42:26 · 953 阅读 · 0 评论 -
perf event
Perf Event 是一款随 Linux 内核代码一同发布和维护的性能诊断工具,由内核社区维护和发展。Perf不仅可以用于应用程序的性能统计分析,也可以应用于内核代码的性能统计和分析。得益于其优秀的体系结构设计,越来越多的新功能被加入Perf,使其已经成为一个多功能的性能统计工具集 。本文将介绍 Perf 在应用程序开发上的应用。 Perf 简介 Perf 是用来进行软件性能原创 2013-06-12 21:59:32 · 908 阅读 · 0 评论 -
linux内核的启动流程
Linux内核启动流程 arch/arm/kernel/head-armv.S 该文件是内核最先执行的一个文件,包括内核入口ENTRY(stext)到start_kernel间的初始化代码,主要作用是检查CPU ID, Architecture Type,初始化BSS等操作,并跳到start_kernel函数。在执行前,处理器应满足以下状态: r0 - should be 0 r1转载 2013-05-23 11:12:01 · 695 阅读 · 0 评论 -
静态库和动态库的区别
库从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行。库分静态库和动态库两种。 静态库和动态库的区别1. 静态函数库 这类库的名字一般是libxxx.a;利用静态函数库编译成的文件比较大,因为整个 函数库的所有数据都会被整合进目标代码中,他的优点就显而易见了,即编译后的执行程序不需要外部的函数库支持,因为所有使用的函数都已经被编译进去了。当然这也会成为他的原创 2013-05-07 22:50:58 · 556 阅读 · 0 评论 -
调整内核printk的打印级别
有时调试内核模块,打印信息太多了,可以通过修改/proc/sys/kernel/printk文件内容来控制。默认设置是6 4 1 7# cat /proc/sys/kernel/printk7 4 1 7该文件有四个数字值,它们根据日志记录消息的重要性,定义将其发送到何处。关于不同日志级别的更多信息,请查阅syslog(2)联机帮助。上原创 2013-04-24 16:23:44 · 11028 阅读 · 0 评论 -
一个C语言程序被编译的全过程
编译的概念:编译程序读取源程序(字符流),对之进行词法和语法的分析,将高级语言指令转换为功能等效的汇编代码,再由汇编程序转换为机器语言,并且按照操作系统对可执行文件格式的要求链接生成可执行程序。编译的完整过程:C源程序-->预编译处理(.c)-->编译、优化程序(.s、.asm)-->汇编程序(.obj、.o、.a、.ko)-->链接程序(.exe、.elf、.axf等)1原创 2013-09-22 16:27:10 · 1646 阅读 · 0 评论