
Debugging
文章平均质量分 90
xianjian_x
kxapiss@163.com
展开
-
linux内核调试环境搭建-3 调试内核模块
在虚拟机中创建两个脚本get.sh:tftp 192.168.100.1 -g -r $1put.sh:tftp 192.168.100.1 -p -l $1在linux设备驱动开发详解中源码:/*====================================================================== A globalmem ...原创 2012-11-07 20:59:32 · 4082 阅读 · 0 评论 -
基于arm的C++反汇编 基本数据类型
基本数据类型Cpp中的引用常量常量的定义基本数据类型 反汇编一个基本的知识点就是掌握数据类型,包括整形和浮点类型在内存中是如何存放的,这里要知道原码,反码,补码,以及IEEE浮点标准,这部分与处理器架构无关,《C++反汇编与逆向分析技术揭秘》 第二章已经有详细讲解,这里略过。 在此推荐下我曾经写过的一个进制转换的工具 来学习数据类型 。 Cpp中的引用原创 2016-05-20 17:42:22 · 2306 阅读 · 1 评论 -
基于arm的C++反汇编 qemu-arm环境搭建
看雪高手写了在windows 上基于x86架构的 C++ 反汇编分析,但是没有人弄过在linux下基于arm架构的C++反汇编教程,这里尝试分析下,可以看到不管在win下还是linux下,不管基于x86还是基于arm 都遵循同样的C++标准,内存布局都是一样的。 首先第一步搭建环境,为了方便这里不再从头编译而是使用网络上现成的二进制工具,参考Architectures/ARM/HowToQemu1原创 2016-05-20 13:35:55 · 2156 阅读 · 0 评论 -
mips体系堆栈回溯分析与实现
在上家公司做 linux 驱动开发主要基于mips架构,在内核下有一个好玩的函数 dump_stack, 只要调用到这个函数就能把函数的调用栈给打印出来,十分方便,不再需要kgdb断点了。 现在做电视机顶盒开发,各种软硬件平台 arm mips linux ecos 都有,有时候想要获得一个函数从哪里调用来的单凭静态分析根本不行,如果动态运行那就要在每个调用前面加入打印,修改量巨大而且容易出原创 2015-08-28 17:16:16 · 11056 阅读 · 9 评论 -
基于arm的C++反汇编 函数的工作原理
栈帧的形成和关闭各种调用方式的考擦使用 fp或sp寻址函数的参数 与返回值arm指令中立即数存放位置gdbserver 调试环境栈帧的形成和关闭栈在内存中是一块特殊的存储空同, 它的存储原则是“先进后出”, 即最先被存储的数据最后被释放, 汇编过程通常使用 push 指令与 POP指令对栈空间执行数据压入和数据弹出操作。栈结构在内存中占用一段连续的存储空间, 通过sp与 fp这两个栈指针寄原创 2016-05-23 19:04:14 · 7547 阅读 · 0 评论 -
linux内核调试环境搭建-4 调试模块初始化函数
打开一终端执行:qemu -m 512 -kernel bzImage -append "root=/dev/sda kgdboc=ttyS0,115200 kgdbwait" -boot c -hda busybox.img -k en-us -net nic -net tap,ifname=tap0,script=no -serial tcp::4321,server显示等待调试端链...原创 2012-11-07 21:01:37 · 3310 阅读 · 3 评论 -
setjmp和longjmp函数使用详解
非局部跳转语句—setjmp和longjmp函数。非局部指的是,这不是由普通C语言goto,语句在一个函数内实施的跳转,而是在栈上跳过若干调用帧,返回到当前函数调用路径上的某一个函数中。#include <setjmp.h>int setjmp(jmp_buf env); 返回值:若直接调用则返回0,若从longjmp调用返回则返回非0值void longjmp(jmp_buf env,int原创 2015-11-13 17:14:18 · 1116 阅读 · 0 评论 -
linux内核调试环境搭建-1 Ubuntu10 .10下编译安装qemu
内核调试一般比应用层程序调试困难很多,主要因为内核是系统开机后执行的第一个程序,这使得用于一般应用程序的调试方法无法使用在内核上。自由软件社群开发了一些特殊方法解决这问题。 这些方法中最方便的方法莫过于 KGDB 的使用。KGDB 是个一特殊的内核辅助工具,除了在内核代码中加入了一些调试代码外也提供一个 gdbstub 用于和远程 gdb 调试程序联机用。以前,这样一个使用远程 gdb...原创 2012-11-07 20:54:31 · 7102 阅读 · 1 评论 -
gcc 优化细节
GCC优化概述GCC有很多优化选项,一般包括O1,O2, O3,Os,Og等。一般很容易通过在线手册找到对应gcc版本的上述优化选项的细节。除了开启一些选项之外,GCC的优化也设置一些parmas。例如gcc-4.6.1的优化选项细节可以从下面的网站获得:http://gcc.gnu.org/onlinedocs/gcc-4.6.1/gcc/Optimize-Optio转载 2015-08-07 19:06:15 · 4298 阅读 · 0 评论 -
linux内核调试环境搭建-2 用busybox搭建
下载linux内核:$cd ~/work/$wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.35.9.tar.bz2解压$tar -jxvf linux-2.6.35.9.tar.bz2拷贝现有系统的内核配置选项$ cp /boot/config-2.6.35-22-generic .config...原创 2012-11-07 20:57:52 · 7768 阅读 · 2 评论 -
用GDB反汇编调试linux内核
在搭建好linux内核调试环境之后还会遇到各种问题,比如linux内核是不允许已最低优化等级编译的,因此有时候打印一个变量值就会显示 <optimized out> 这个时候就需要采用其它的方式来显示变量值了,反汇编就是其中一种方式:当调试linux模块初始化函数的时候(http://blog.youkuaiyun.com/xsckernel/article/deta...原创 2012-12-04 10:31:06 · 5934 阅读 · 0 评论 -
WinDbg链接
MSDN文档一个简单的介绍最基本功能涉及了stack overflow 挺详细的WinDbg配置和使用基础转在WinDBG中查看函数的反汇编代码的命令在WinDBG中查看变量的命令windbg下如何使用bp对指定文件指定源码行数下断使用windbg调试release程序MSDN文档,一个简单的介绍,最基本功能涉及了Getting Started with WinDbg (User-Mo转载 2016-11-01 19:23:16 · 893 阅读 · 0 评论