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