
调试
文章平均质量分 88
因上努力果上随缘
这个作者很懒,什么都没留下…
展开
-
使用 Kprobes 调试内核
将 printk 插入到运行中的 Linux 内核。使用了 Kprobes,不需要经常重新引导和重新编译内核就可以完成这一任务。Kprobes 与 2.6 内核结合起来提供了一个动态插入 printk's 的轻量级、无干扰而且强大的装置。记录调试信息(比如内核栈追踪、内核数据结构和寄存器)日志从来没有这么简单过!转载 2017-02-19 01:15:11 · 441 阅读 · 0 评论 -
GCC 中的编译器堆栈保护技术
本文介绍了编译器所采用的以 Canaries 探测为主的堆栈保护技术,并且以 GCC 为例展示了 SSP 的实现方式和实际效果。最后又简单介绍了突破编译器保护的一些方法。尽管攻击者仍能通过一些技巧来突破编译器的保护,但编译器加入的堆栈保护机制确实给溢出攻击造成了很大的困难。本文仅从编译器的角度讨论了防御溢出攻击的方法。要真正防止堆栈溢出攻击,单从编译器入手还是不够的,完善的系统安全策略也相当重要,此外,良好的编程习惯,使用带有数组越界检查的 libc 也会对防止溢出攻击起到重要作用。转载 2017-02-26 01:13:32 · 384 阅读 · 0 评论 -
Memory Profiler:Python代码的内存分析器
Memory_profiler是一个Python模块,可以监视一个进程的内存消耗,甚至可以一行一行的分析Python程序的内存消耗。它纯粹是由Python实现,用户可选psutil模块(强烈推荐)作为依赖。转载 2017-03-01 23:04:53 · 3184 阅读 · 0 评论 -
在多线程应用程序中使用循环缓冲区高效地进行日志记录
要分析并找出运行错误问题的原因,程序员所广泛使用的一种方法就是日志记录。在本文中,您将了解如何使用循环缓冲区通过内存操作(而不是文件操作)高效地进行日志记录。为该缓冲区选择合适的大小,从而确保转储相关的消息,这将在调试时很有帮助。转载 2017-02-22 01:31:21 · 659 阅读 · 0 评论 -
Linux 套接字编程中的 5 个隐患
Socket API 是网络应用程序开发中实际应用的标准 API。尽管该 API 简单,但是开发新手可能会经历一些常见的问题。本文识别一些最常见的隐患并向您显示如何避免它们。转载 2017-02-22 01:11:00 · 277 阅读 · 0 评论 -
定位 UNIX 上常见问题的经验总结
主要对 UNIX 平台常见的问题进行了分类,介绍一些常见问题分析时使用的方法和命令,对以下三种常见问题的分析方法做了简单介绍:UNIX 下 Crash 问题的分析方法、UNIX 下内存泄露问题的分析方法和 UNIX 下 performance 问题的分析方法。转载 2017-02-22 00:55:42 · 537 阅读 · 0 评论 -
掌握 Linux 调试技术
可以用各种方法来监控运行着的用户空间程序:可以为其运行调试器并单步调试该程序,添加打印语句,或者添加工具来分析程序。本文描述了几种可以用来调试在 Linux 上运行的程序的方法。我们将回顾四种调试问题的情况,这些问题包括段错误,内存溢出和泄漏,还有挂起。转载 2017-02-22 00:52:18 · 257 阅读 · 0 评论 -
linux下调试监控类工具
linux下调试监控类工具总结原创 2017-02-19 23:21:46 · 301 阅读 · 0 评论 -
使用 GDB 和 KVM 调试 Linux 内核与模块
本文介绍使用 GDB 和 KVM 虚机进行 linux 内核和模块的调试方法。使用 GDB 调试内核和模块可以快速找到问题所在,并在内核崩溃时可以快速重启虚机继续下次调试。转载 2017-02-20 00:45:49 · 482 阅读 · 0 评论 -
Linux 下的一个全新的性能测量和调式诊断工具 Systemtap
本系列文章详细地介绍了一个Linux下的全新的调式、诊断和性能测量工具Systemtap和它所依赖的基础kprobe以及促使开发该工具的先驱DTrace并给出实际使用例子使读者更进一步了解和认识这些工具。 本文是该系列文章之一,它讲解了kprobe的原理、编程接口、局限性和使用注意事项并给出实际使用示例帮助读者理解和认识kprobe。本系列文章之二讲解了DTrace以及Systemtap与DTrace比较。本系列文章之三讲解了Systemtap的原理,并通过一个例子向读者展示Systemtap的工作机理。转载 2017-02-19 23:07:19 · 499 阅读 · 0 评论 -
Linux 自检和 SystemTap
用于动态内核分析的接口和语言。现代的操作系统内核提供自检 功能,即动态地检查内核以理解其行为的能力。这些行为可以反映内核问题和性能瓶颈。拥有这些信息时候,您就可以调优或修改内核以避免出现故障。本文探索一个名为 SystemTap 的开放源码基础设施,它为 Linux® 内核提供这种动态的自检。转载 2017-02-19 23:11:41 · 319 阅读 · 0 评论 -
内核调试神器SystemTap — 简介与使用(一)
SystemTap是我目前所知的最强大的内核调试工具,有些家伙甚至说它无所不能转载 2017-02-19 23:25:08 · 288 阅读 · 0 评论 -
linux下内存的统计和内存泄露类问题的定位
在产品的开发中,通过对当前系统消耗内存总量的统计,可以对产品所需内存总量进行精确的评估,从而选择合适的内存芯片与大小,降低产品的成本。在遇到内存泄露类问题时,经常会对此束手无策,本文通过对proc下进程相关的文件进行分析,精确评估系统消耗内存的大小,还可以对内存泄露类问题的解决提供一种定位手段。Linux在内存使用上的原则是:如果内存充足,不用白不用,尽量使用内存来缓存一些文件,从而加快进程的运行速度,而当内存不足时,会通过相应的内存回收策略收回cache内存,供进程使用。转载 2017-02-19 03:25:46 · 204 阅读 · 0 评论 -
使用kprobes查看内核内部信息
使用printk打印变量等方法,是调试内核的有效方法之一,但是这种方法必须重新构建并用新内核启动,调试效率比较低。以内核模块的方式使用kprobes、jprobes,就可以在任意地址插入侦测器,执行包括printk在内的各种调试工作,而无须重新构建内核,也无须重启。转载 2017-02-19 03:12:08 · 249 阅读 · 0 评论 -
kprobe工作原理
Kprobes 提供了一个强行进入任何内核例程并从中断处理器无干扰地收集信息的接口。使用 Kprobes可以收集处理器寄存器和全局数据结构等调试信息。开发者甚至可以使用 Kprobes 来修改寄存器值和全局数据结构的值。基本工作机制是:用户指定一个探测点,并把一个用户定义的处理函数关联到该探测点,当内核执行到该探测点时,相应的关联函数被执行,然后继续执行正常的代码路径。kprobe实现了三种类型的探测点: kprobes, jprobes和kretprobes (也叫返回探测点)。 kprobes是可以被插转载 2017-02-19 02:24:40 · 1028 阅读 · 0 评论 -
Linux内核中Kprobes调试技术的实现
内核调试技术―Kprobes, Kprobes是一个轻量级的内核调试工具,利用Kprobes技术可以在运行的内核中动态的插入探测点,在探测点处执行用户预定义的操作。本文首先根据Kprobes在Linux内核中的源码实现,针对Linux CPU异常技术,single-step技术,Loadable Kernel Module技术以及RCU同步技术在Kprobes中的应用进行了研究。其次,针对Kprobes目前所支持的kprobe,jprobe,kretprobe等三种调试手段的实现进行了详细的分析研究。转载 2017-02-19 01:21:04 · 404 阅读 · 0 评论 -
侦测程序句柄泄露的统计方法
在 Linux 平台上运行的进程都会从系统资源申请一定数量的句柄,而且系统控制了进程能够申请的最大句柄数量。用户程序如果不及时释放无用的句柄,将会引起句柄泄露,从而可能造成申请资源失败。该文章从 linux 内核角度分析了句柄的产生和泄漏的原因,并采用一种应用统计侦测句柄的方法,为用户判断程序句柄是否泄漏提供了更直观的依据。通过对程序句柄数量进行采样统计,并且绘制出相应的统计图形,能够以比较直观的方式判断在程序中是否存在句柄泄露。该方法基于程序要运行大量的测试用例,增加测试用例的覆盖率,尽可能多的用测试用转载 2017-02-26 09:58:22 · 339 阅读 · 0 评论