11 2012 档案

摘要:先介绍一下GDB多线程调试的基本命令。 info threads 显示当前可调试的所有线程,每个线程会有一个GDB为其分配的ID,后面操作线程的时候会用到这个ID。 前面有*的是当前调试的线程。 thread ID 切换当前调试的线程为指定ID的线程。 break thread_test.c:123 thread all 在所有线程中相应的行上设置断点 thread apply ID1 ID2 command 让一个或者多个线程执行GDB命令command。 thread apply all command 让所有被调试线程执行GDB命令command。 阅读全文

posted @ 2012-11-29 20:51 鬼寿 阅读(171) 评论(0) 推荐(0)

摘要:看到这里,我们不禁要问,系统调用为什么就这么耗时呢?系统调用与普通函数调用到底有什么不同? 1、两者都是在调用处进行跳转,转到被调用的代码中去执行; 系 统调用使用的"跳转"指令相对复杂。因为跳转到内核空间去执行时,CPU特权级别需要改变(否则没有权限访问到内核空间)。于是,CPU必须封装一条指 令,既实现跳转、又实现特权级别的改变,并且还要保证跳转到的地方就是内核代码(否则用户程序用这个指令假跳一下,自己就拥有特权了)。而软中断指令恰好 能满足这三点要求,所以,X86下实现系统调用的经典方法就是"INT 0x80"(现在好像换sysenter了吧~ 但是指令要做的事情应该不会变); 阅读全文

posted @ 2012-11-05 14:45 鬼寿 阅读(1407) 评论(0) 推荐(2)