![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux调试总结
文章平均质量分 88
mozun1
这个作者很懒,什么都没留下…
展开
-
CC_STACKPROTECTOR防止内核stack溢出补丁分析
CC_STACKPROTECT补丁是Tejun Heo在09年给主线kernel提交的一个用来防止内核堆栈溢出的补丁。默认的config是将这个选项关闭的,可以在编译内核的时候,修改.config文件为CONFIG_CC_STACKPROTECTOR=y来启用。未来飞天内核可以将这个选项开启来防止利用内核stack溢出的0day攻击。这个补丁的防溢出原理是: 在进程启动的时候, 在每个转载 2016-12-01 19:08:39 · 3146 阅读 · 0 评论 -
gprof工具使用介绍
一、gprof介绍 gprof是GNUprofiler工具。可以显示程序运行的“flat profile”,包括每个函数的调用次数,每个函数消耗的处理器时间。也可以显示“调用图”,包括函数的调用关系,每个函数调用花费了多少时间。还可以显示“注释的源代码”,是程序源代码的一个复本,标记有程序中每行代码的执行次数。二、Gprof功能: 打印出程序运行中各个函数原创 2017-02-27 11:33:44 · 3076 阅读 · 0 评论 -
linux内核死机2-smp
问题:程序跑一段时间之后会报告: INFO: rcu_sched_state detected stalls on CPUs/tasks: { 1} (detected by 0, t=15002 jiffies)。意思是CORE0检测到CORE1挂了。1.cpu执行的指令和数据是从L1高速缓存的指令缓存和数据缓存中获取,一旦cpu要执行的指令或数据无法从高速缓存中获取,就会原创 2017-01-16 15:32:45 · 7177 阅读 · 0 评论 -
GCC 各工具使用简介
GCC:GNU开发的程序编译器GNU:“GNU‘s NotUnix”,最初是为了实现一个类似unix的自由操作系统,感觉现在已经通常泛指遵循GPL自由软件精神的组织。GPL:GNU通用公共许可证(GNU GeneralPublic License),简单的说就是遵循GPL的代码任意用户可以复制发布;使用或者修改了GPL的代码也必须遵循GPL精神;遵循GPL的代码已源代码发布;GPL并不转载 2016-12-24 11:08:21 · 725 阅读 · 0 评论 -
linux反汇编调试
反汇编有有以下几种方法:1.使用gcc -S test.c 或者gcc -S test.c>out.txt2.使用gdb调试,在调试中输入disass 函数名 就可以3.objdump -D test 一般常用1,2两种,~~~~~C语言代码example.cint triangle( int width, int height){int arr{0,1,2,3,4};原创 2016-11-25 18:28:50 · 4105 阅读 · 0 评论 -
linux内核中打印栈回溯信息 - dump_stack()函数分析
简介当内核出现比较严重的错误时,例如发生Oops错误或者内核认为系统运行状态异常,内核就会打印出当前进程的栈回溯信息,其中包含当前执行代码的位置以及相邻的指令、产生错误的原因、关键寄存器的值以及函数调用关系等信息,这些信息对于调试内核错误非常有用。打印函数调用关系的函数就是dump_stack(),该函数不仅可以用在系统出问题的时候,我们在调试内核的时候,可以通过dump_stack()函转载 2016-11-25 17:41:38 · 1684 阅读 · 0 评论 -
Linux内核调试之Oops信息
http://blog.sina.com.cn/s/blog_703f58b101015mat.htmlhttp://blog.chinaunix.net/uid-23046336-id-3220727.html常在河边走,哪能不湿鞋。用Linux,总有死机的时候,如果运气好,会看到一些所谓”Oops”信息(在屏幕上或系统日志中),比如:Unable to handle ker转载 2016-11-21 14:05:39 · 1584 阅读 · 0 评论 -
Linux oops信息的分析 -----------
Andrew Huang 转载请注明作者及网址oops是英语口语"糟糕"的意思,当LINUX 内核发生严重错误时,比如内存段错误时,将会提示一大段信息。就提示 Oops,因此得名,Oops提示信息相当多,包括出问题时的,各个常用寄存器的值,调用的堆栈,以及出错的可能原因1.oops 的格式内核的文档里的详细的Oops的说明,的名字是Documentat转载 2016-11-21 14:30:40 · 1407 阅读 · 0 评论 -
linux内核调试2
http://blog.chinaunix.net/uid-29401328-id-4932947.html下面再来测试一次:# insmodsystem_dead.kosysdead_drv_init success!# ./test // 卡死了,等10s会打印如下信息asm_do_IRQ -> s3c2410_tim转载 2016-12-02 20:59:03 · 311 阅读 · 0 评论 -
linux内核调试方法
内核开发比用户空间开发更难的一个因素就是内核调试艰难。内核错误往往会导致系统宕机,很难保留出错时的现场。调试内核的关键在于你的对内核的深刻理解。一 调试前的准备 在调试一个bug之前,我们所要做的准备工作有: 有一个被确认的bug。包含这个bug的内核版本号,需要分析出这个bug在哪一个版本被引入,这个对于解决问题有极大的帮助。可以采用二分查找转载 2016-12-02 20:56:27 · 547 阅读 · 0 评论 -
linux驱动调试--段错误之栈信息分析
原文来源:http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=29401328&id=4923529, 感谢原著。接着上一篇来分析一下Oops的栈s3c2440平台关于调试源码和整个Oops信息请参考上一篇博文,这里只再次贴出关于栈的信息Stack: (0xc3a61e30 to 0xc3a6200转载 2016-12-01 20:25:52 · 484 阅读 · 0 评论 -
linux驱动调试--段错误之oops信息分析
原文地址http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=29401328&id=4923447发生段错误原因就是访问了不该访问的地址,例如访问了不存在的内存地址、访问了系统保护的内存地址、访问了只读的内存地址等。下面根据Oops信息来分析一下段错误first_drv.c #include转载 2016-12-01 20:19:46 · 655 阅读 · 0 评论 -
linux安装配置CONFIGURE详解
tar.gz、tar.bz2的是源代码包,需要编译之后才能安装,在编译过程中你可以指定各种参数以适应你的系统需求,比如安装位置,优化参数,要哪些功能不要哪些功能等等。这类源代码包需要解压后(tar.gz的用 tar zxvf 解压,tar.bz2的用 tar jxvf 解压),进入解压目录,一般都有一个 INSTALL 的文本文件,里面一般都是安装的详细说明,可以用vi、nano、pico或X原创 2017-03-15 20:37:52 · 12198 阅读 · 1 评论