摘要: 最近学习了elf文件的格式,重点关注了动态链接过程中的使用到的section 第一步程序在加载时,会把解释器程序加入到.interp段。可以解决动态库和可执行文件的加载。 一般来讲程序的加载方式是懒启动,Lazy;除非指定了LD_BIND_NOW环境变量非0,那么在程序启动时就会把外部符号地址全部加 阅读全文
posted @ 2016-06-21 16:19 __sipl 阅读(561) 评论(0) 推荐(0) 编辑
摘要: 最近阅读了tcp/ip详解卷2,总结一下整个发送过程和接收过程 sendmsg \/ sendit \/ sosend(这一步将数据从用户空间拷贝到内核空间,并且会在这一步判断发送缓存空间是否充足,是否需要等待缓存空间,循环发送) \/ tcp_usrreq(将上一步中整理好的数据添加到发送缓冲尾部 阅读全文
posted @ 2016-06-13 15:40 __sipl 阅读(1124) 评论(0) 推荐(0) 编辑
摘要: 以下内容总结自debug hacks一书的高手们的调试技术一章 1.strace的使用技巧 strace name,以这样的方式运行程序,可以查看到程序运行时的系统调用,仅仅是系统调用。可以看到系统调用失败时的传参,或者卡在哪个函数位置等等。 -i选项可以看到每个系统调用的地址,那样在使用gdb调试 阅读全文
posted @ 2016-06-01 16:42 __sipl 阅读(514) 评论(0) 推荐(0) 编辑
摘要: 最近在学习linux高级调试技术。下面就动态库连接这块做了一个实验 首先理解下plt是procedure linkage table,got是global offset table。got表中存放的是外部符号的地址。plt表中存放的是函数地址。下面看下实验具体情况。 源码: #include <st 阅读全文
posted @ 2016-06-01 10:34 __sipl 阅读(1459) 评论(1) 推荐(1) 编辑
摘要: 以下内容主要学习自debug hacks一书。 有关内核调试方面的技巧,我更多的是将其映射为应用程序的调试技巧。我觉得大部分都是线程间同步的问题。 1.对于NULL指针的访问。 这个问题一般来讲是比较容易确定的,一般来讲就是未申请空间,或者申请空间失败了但是没有检查错误。这个可以通过backtrac 阅读全文
posted @ 2016-05-18 16:23 __sipl 阅读(458) 评论(0) 推荐(0) 编辑
摘要: 总结一下对应用程序出现segment fault时的基础和调试方法,知识来自debug hacks一书 环境,x86 32位linux 一.基础 1.熟悉参数的传递方式。 在进入被调用函数之前,程序会按照参数,返回地址,fp指针(帧指针),被调用函数的局部变量,的次序压栈。 源码: #include 阅读全文
posted @ 2016-05-18 13:49 __sipl 阅读(541) 评论(0) 推荐(0) 编辑
摘要: 一般线程的结束是由进程内的其他线程来结束的,调用pthread_cancel. 但是需要考虑到被结束线程的性质,一方面,线程是可被结束,也可无法结束,即不响应该信号;另一方面,如果线程是可被结束的,那么结束的方式有两种,一种是同步,当线程收到这个信号的时候先挂起,等到下一个取消点时再响应该信号,另一 阅读全文
posted @ 2016-05-10 14:43 __sipl 阅读(2173) 评论(0) 推荐(0) 编辑
摘要: 本人最近正在学习调试技术,此处对栈溢出做一些总结。 gdb的基本使用就不多扯了。 主要针对发行在外的release版本的软件出现问题时的调试。 一般来讲,查看堆栈就是使用bt,这个时候加上bt full会让你更加满意,因为这里面可以显示出局部变量信息。 另一点是查看寄存器中的值,主要是sp和ip。指 阅读全文
posted @ 2016-04-27 17:33 __sipl 阅读(464) 评论(0) 推荐(0) 编辑
摘要: lib1.c #include <stdio.h>int fun(){ printf("lib1\n"); return 0;} lib2.c #include <stdio.h> int fun1(){ return 0;} int fun(){ printf("lib2\n"); return 阅读全文
posted @ 2016-02-29 11:20 __sipl 阅读(1029) 评论(0) 推荐(1) 编辑
摘要: 1.桥接模式 个人觉得有些类似于抽象工厂模式2.命令模式 提供了一个中介,中介集成了各类功能,客户端可以添加删除某些功能,可以执行某些功能 阅读全文
posted @ 2015-12-29 16:00 __sipl 阅读(250) 评论(0) 推荐(0) 编辑