- 博客(8)
- 收藏
- 关注
原创 android 调试利器之IDA
android 调试利器之IDA (xingchongatgmaildotcom)工欲善其事,必先利其器IDA 是公认的反汇编最给力的工具。google IDA 或者IDApro 就能找到IDA的主页;IDA价格是很贵的,最便宜的license也要超过500美元,不过他提供Demo版本,虽然功能有限制,但基本功能都在,而且可以无限期使用;IDA不但支持x86,也支
2012-11-18 22:27:45
5022
原创 android 调试利器之 strace
strace 是linux下的调试利器;debug居家必备strace可以跟踪所有的系统调用,打印系统调用的参数和返回值; strace还可以指定跟踪子线程/子进程,这是调试多线程程序必须的;andriod 使用了linux操作系统,strace当然是好用的;strace本身不依赖于系统,从一个机器拷贝到另一个机器直接能用;可以看到,strace 只依赖三个最基本的库:
2012-11-10 12:46:32
13308
1
原创 原子性和线程安全
原子性和线程安全 (xingchongatgmaildotcom)指令原子性在单核时代,每条指令的执行都是原子的,即指令执行的中间状态是外部不可见的。这是cpu必须要保证的。从逻辑上来说,cpu只需要保证中断/异常触发的时候,当时要执行的指令要么完成,要么看起来和没开始一样。这叫做状态一致 (state consistent). 保证了状态一致性也就保证了原子性。
2012-11-04 15:22:03
3055
原创 gdb 调用栈 (call stack)
分享一篇不错的文章讲述调用栈; 如果得到调用栈http://www.yosefk.com/blog/getting-the-call-stack-without-a-frame-pointer.html不做全文翻译,做个简单归纳:有三种方式得到调用栈:a. 通过栈桢寄存器(frame pointer register). 每一层函数调用都保存前一层栈桢, 这样顺
2012-06-19 15:23:28
5369
原创 Calloc Vs Malloc
C 语言中,经常有这样的需求:分配一块内存,并且初始化为0:很多人会写如下的代码: char *mem = (char*) malloc (size); if (!mem) exit(-1); memset(mem, 0, size);上诉代码可以很好的工作,但是有更好的做法: char
2012-06-14 20:52:17
2815
翻译 从汇编角度看英特尔x86函数调用规范
原文地址: http://www.unixwiz.net/techtips/win32-callconv-asm.html 从汇编角度看英特尔x86函数调用规范 在阅读编译好的C代码中,一个大问题就是函数调用规范。调用规范是调用函数(caller)与被调用函数(callee)对他们之间如何传递参数和返回值,以及如何使用堆栈所达成的协议。
2007-04-01 17:42:00
5025
原创 使用Qemu来调试linux内核
Qemu是一个优秀的开源ISA模拟器,支持很多体系结构,当然包括x86。Qemu提供调试功能,可以对被模拟进行调试。Qemu主页http://fabrice.bellard.free.fr/qemu/Qemu下载页面http://fabrice.bellard.free.fr/qemu/download.html 包括源码,可执行文件,已制作好的disk file等Qemu有使用
2007-03-28 23:08:00
4880
原创 被glibc忽悠了
2006/05/09一段代码其中包含两次glibc函数调用getpid(); 本意是希望后一个getpid()调用产生一次system call; 可是glibc只进行了一次system call,第二次glibc直接使用了第一次的结果; 搞得我调了半天其它代码。整了个示例如下:C程序://test.cint main(){ int pid; pid = getpid(); pid = get
2006-07-20 22:16:00
3835
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人