- 博客(13)
- 收藏
- 关注
原创 反汇编调试
从后往前看发现调用关系是sys_ioctl->do_vfs_ioctl->at24c02_ioctl,将问题定位至at24c02_ioctl函数处,该函数源码如下,该函数被at24c02_drv.c文件包含,生成的驱动文件是at24c02_drv.ko。再使用vim at24c02.dis查看具体内容,在反汇编文件中直接查找at24c02_ioctl,发现起始机器码是0074,图一中LR指向ioctl+0x1dc,则0x74+0x1dc=250,说明错误发生处是机器码为250的地方,
2023-12-18 16:20:08 389 1
原创 Linux网络编程学习
一、基础协议部分(1)OSI七层模型:物、数、网、传、会、表、应。若精简为四层模型,则为网、网、传、应。四层模型中,每一层对应的协议如下:应用层:http、ssh、ftp传输层:tcp、udp网络层:ip、ICMP、IGMP网络接口层:以太网帧协议、ARP(2)c/s模型(客户端-服务端模型)优点:可缓存大量数据、可自己开发相应的传输协议、速度快缺点:安全性较低、开发量较大、不可跨平台使用b/s模型(浏览器-服务端模型)...
2022-03-19 17:27:03 937
原创 编写一个简单的makefile脚本
此时目录下有四个.c文件,用来执行加减乘法分别为add.c sub.c mul.c模块hello.c理解为汇总加减乘法的一个api。我们先来用gcc联合编译一下看下结果下面开始编写makefile脚本来自动的完成这些事情,新建一个名称为makefile的文件(注意文件名称必须为makefile),用all来指定最终生成的可执行文件的名称,此处我们的可执行文件名称为a.out,则all:a.out首先我们要知道一个规则,如下:要生成的目标:依赖的条件 gcc 依赖文件 -o ...
2022-03-19 14:33:54 807
原创 GDB基本操作
一、先来介绍一下基本用法(1)首先,我们要清楚,如果想使用gdb进行调试,必须在gcc编译时加上-g,比如当前源文件名称为gdbtest.c,则在编译是输入指令gcc -g gdbtest.c -o gdbtest,这样会生成可执行可调试的文件gdbtest(2)输入gdb gdbtest,表明进入gdbtest这个文件进行相应的调试,下面就可以开始执行我们的调试步骤啦(3)调试过程中我们免不了要打断点,gdb中打断点的方式是b+行号,b表示break,行号表示在哪一行打断点,例如 b 20,则
2022-03-19 13:27:01 568
原创 strcat函数实现过程
先来看下strcat的函数原型char*strcat(char*str1,constchar*str2),实现的功能是将str2字符串接续写在str1后,比如a[]="1234",b[]="abcd",调用strcat(a,b)则可以得到1234abcd。函数实现并检测过程如下:#include<stdio.h>char*mystrcat(char*str1,constchar*str2){if((NULL==str1)||(NULL==st...
2021-12-22 17:05:02 2888
原创 strcmp函数的实现
strcmp主要是用来判断两字符串是否相等的库函数(判断相等时区分大小写),函数声明如下int strcmp(const char* str1,const char * str2),返回值类型是int.(1)当str1==str2时,返回0(2)当str1>str2时,返回大于0的整数(3)当str1<str2时,返回小于0的整数编写实现的思路:首先判断参数入参有效性,参数错误则返回error,注意error提前宏定义为了-2,因为函数返回类型是int,所以即使参数错误返回也应该
2021-12-22 14:29:07 7269 1
原创 二分排序实现
写在前面:执行二分排序地前提条件是:数组中的数据是从大到小或者从小到大有序排列的,概括起来就是必须是有序排列的,我们来看实现函数的过程,在符合low<high的大前提下,如果index<arr[middle]则在左侧继续查找,并给high赋值为middle-1,若index>arr[middle]则在右侧继续查找并给low重新赋值为middle+1,否则就找出了对应的索引值,直接返回middle的值。#include<stdio.h>intsecond(intar...
2021-12-21 20:16:11 134
原创 strcpy函数的实现
strcpy函数是实现字符串的复制,dst为目标字符串,src为源字符串,以下为实现并检验的程序#include<stdio.h>char*mystrcpy(char*dst,constchar*src){if((NULL==dst)||(NULL==src)){returnNULL;}char*ret=dst;while((*dst++=*src++)!='\0');...
2021-12-21 10:01:10 2305
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人