- 博客(494)
- 资源 (44)
- 收藏
- 关注
原创 【C++】0xc0000005写入位置时发生访问冲突解决方法
很多的程序员在编写代码的时候都在处理的过程中遇到了错误代码0xc0000005导致后续的操作发生了冲突,下面就带来了0xc0000005写入位置时发生访问冲突解决方法,快来一起学习一下吧。要是这样还是没能够成功,那么很可能是你的系统有问题不兼容导致的,因此大家可以通过浆果一键装机工具来进行系统重装解决问题。1、一般用户都是在点击调试按钮进行调试时遇到了错误代码,这是内存的写入错误。2、此时需要更改系统的栈保留空间,点击“项目”选项卡,再点击“项目属性”。4、然后再次进行代码运行,就可以解决之前的问题了。
2025-01-27 13:01:46
262
原创 【C++】如何从源代码编译红色警戒2地图编辑器
这个直接通过微软安装,其实这里先只需要安装很少部分,当通过VS2022打开下载的源代码时,VS会提醒安装所缺的编译器及相关的东西,好像有1、2个多G要安装。这步很重要,这里好像是要更新三方库的下载索引还是啥的,我在这里吃过亏,如果这里不操作,三方库不下载,编译时会报很多源代码依赖不到。vs2022编译前需要下载源代码依赖的三方库,可能会报下载载被x-block-origin。源代码大概1.6M的样子,这里要小心,编译源代码需要的其他三方库比较多。1.红警2的地图编辑器居然更新2.0了,还开源了。
2025-01-18 12:10:14
1455
原创 【Linux】Systemtap在CentsOS9上测试成功了
结果未找到这三个软件实际对应版本的rpm包,最终只能选择安装跟内核版本比较相近的rpm包。安装命令就是rpm -ivh xxx.rpm包。看到运行的效果,可以安心些,哈哈。
2024-12-13 15:14:05
518
原创 【Linux】SystemTap(类似Runtime Hook)在裁剪的系统运行不成功
make[1]: *** [scripts/Makefile.build:244:/tmp/stapksp0yb/stap_304a8a6d54945a958b0401857f38910b_1136_src.o] 错误 1。make: *** [Makefile:1919:/tmp/stapksp0yb] 错误 2。make[1]: *** 正在等待未完成的任务....
2024-11-29 10:35:38
653
原创 【Linux】linux c语言调用send()接口内核调用流程
基于完整日志过滤" a.out "后的日志,因为第1步c代码编译出来的可执行文件叫a.out,执行时内核中的进程名是a.out。到这步其实已经到驱动层了。
2024-11-06 00:32:51
1039
原创 【Linux】进程ID和线程ID在日志中的体现
这里可以看出,在创建进程的时候(实际有可能是线程) ,这个pid是不断变化的,但是如果是创建线程,tgid的值实际上是父进程的值,从上图中可以看出,父进程的tgid值是等于pid的值的(2507行和2516行)。有点类似开始分析打印日志的时候,有多进程时,如果未把多进程的ID打印出来,是不太容易分析出来函数调用流程的,如下图所示红色方框这个字段,(注意,这图未针对函数调用关系混乱)这个pr_info_self打印宏其实还挺厉害,尤其是结合内核裁剪后,说不定更厉害。然后查找进程名为:firefox的进程。
2024-10-18 09:24:00
579
原创 【Linux】C文件头文件数裁剪前58644个,裁剪后9373个
在裁剪目录的时候,发现net的目录里边对drivers/net有一些是基于C源文件调用的依赖,比如我们硬件只有intel,没有思科或者其他厂商的,但是代码里有调用关系,开始我碰到这样的问题就直接修改C代码其实里边就是一些if分支什么的,直接干掉,DOGE。一般是删除自己觉得不太重要的代码或者目录,然后编译,重启验证功能是否正常,在开始裁剪驱动的网络目录时,有几次裁剪后无法上网,还有几次是裁剪后无法使用从Windows到Ubuntu的文件共享功能。这样操作的好处:裁剪后不会有多余的文件,都是通过编译找到的;
2024-10-11 17:48:30
855
原创 【Linux】精简Linux内核编译的简单方法
一般说法:在运行这条命令前,将系统需要在后续内核编译的各种硬件都用一遍,以便你的系统中的模块均被调用了一次,使用“make localmodconfig”命令时,才能将你的系统将调用的模块包含进来。在编辑“~/build/kernel/.config”文件时,将相应项改为“=y”而不是“=m”。一般说法:在运行第二条命令前,将系统的各种硬件都用一遍,以便你的系统中的模块均被调用了一次,使用“make localmodconfig”命令时,才能将你的系统将调用的模块包含进来。
2024-10-06 19:12:01
927
原创 【Linux】驱动层源代码如何查看进程ID和进程名称?
从第1张图由于字符串过滤的原因看不出来系统的多进程,如果不过滤,看到的是如下图这样子,可以比较好的说明多进程,操作系统不断的多进程切换,就这一张图有不少进程。源代码所在文件、函数、行号、进程ID、进程名以及当前打印的日志类型,中括号外边就是自己想要打印代码的字符串,参数列表什么的。在第1张图里也看到以太接口对收发包和字节的计数,其实数据就是ifconfig命令的,当前数量对不上,前面有博客是可以对得上的。在第1张图里好像还有第0号进程,稀客。登录 - Gitee.com。
2024-09-24 11:04:36
337
原创 【Linux】通过内核以太层可查看应用程序运行时访问外网情况
下边是运行firefox时内核打印的日志,可以看到浏览品运行时调用了很多的操作系统内核系统调用,比如:文件读写、网络数据包的收发等等,其实这些日志还并不全,因为内核源代码有很多调用频率太高的地方不能添加打印日志,容易造成操作系统死机,这即是前一阵子博客讲的为什么需要把函数调用的频率整理出来的原因。在操作系统运行的时候,好像也看到过Windows也会偷偷收发网络数据包,其中有一个当时是Windows操作系统测试网络连通性会去下载一个外网的文件。
2024-09-23 00:40:43
361
原创 【Linux】当前进展
行 2105: [ 2.011995] kernel: [drivers/base/bus.c bus_add_driver 648] bus: 'platform': add driver cht_dollar_cove_ti_pmic。行 2089: [ 2.011850] kernel: [drivers/base/bus.c bus_add_driver 648] bus: 'platform': add driver cht_crystal_cove_pmic。
2024-09-21 13:49:22
1612
2
原创 【Linux】查看操作系统开机时初始化的驱动模块列表的一个方法
1、驱动层module_init(module_init_function)作为模块初始化,并且提供模块内部初始化的函数名;内核最上层看到的是系统调用入口,最底层是驱动。3、从找到的模块函数中添加打印信息;方法也是摸索出来的,不一定对。
2024-09-13 08:37:39
918
原创 【LINUX】在ubuntu中安装tomcat
#instal jdkapt install openjdk-8-jdk -y#enter install pathcd /home/a/#copy tomcat packagecp /mnt/hgfs/Share/apache-tomcat-9.0.93.tar.gz .#unpress tomcat packagetar -xf apache-tomcat-9.0.93.tar.gz #enter bin pathcd apache-tomcat-9.0.93/bin#start the se
2024-09-11 07:03:52
292
原创 【LINUX】SHELL贪吃蛇
Show()#Mapdo;;;esacdone#Snakefor ((i=0;i++))doecho "*"done#Foodecho "0"dodoneMove();;;;esacArrayMovethenthenthenthenfithen。
2024-09-11 07:02:41
606
原创 【LINUX】ubuntu的docker容器中运行tomcat
Docker在Ubuntu上依赖一些软件包。#复制宿主机tomcat压缩包到容器,以后可能会修改。#查看docker 运行的tomcat id。#复制页面到tomcat服务器目录。#进入docker容器。
2024-09-11 07:01:45
350
原创 【LINUX】某操作后内核函数调用次数,第一列为调用次数
9 net/vmw_vsock/af_vsock.c#vsock_data_ready#91610 fs/ext4/balloc.c#ext4_get_group_no_and_offset#5910 fs/ext4/balloc.c#ext4_read_block_bitmap_nowait#47510 fs/ext4/extents.c#ext4_convert_unwritten_extents#485610 fs/ext4/file.c#ext4_file_open#88010 fs/ex
2024-09-08 21:42:27
2077
原创 【LINUX】ifconfig -a查看到的发送、接收包数和字数字节数在驱动层代码大概位置
从上图可以看出来网卡驱动代码的目录是在drivers/net/ethernet/intel/e1000/e1000_main.c。不过这些数据是在虚拟机看到的,如果有条件可以在实际的物理网卡测试看看效果。这基本上是从驱动层面看到操作系统应用层操作对应的变化。
2024-08-29 21:55:50
396
原创 【Linux】内核全量函数添加日志打印摸索
1、操作系统在空载时要把函数调用次数非常多的注释掉,这里打印时不能带进程名称,高执行概率函数不同进程执行到的概率也很高,不然操作业务会增加卡死的概率;4、验证时先空载,然后添加业务验证,增加业务的验证要慢慢增量,不然不好多文件二分查找定位,这其实很难,得看运气;3、验证时少看代码基于多个文件一起验证,内核文件太多,看代码来不及,偶尔看下代码是可以的;8、drivers目录25255个文件,验证还没找到一个比较快的方法。5、验证时先验证框架,把框架中日志打印太多的注释掉,不然影响内核验证性能;
2024-08-19 22:10:01
298
原创 【LINUX】小工具降耦合,全内核函数插入宏摸索测试中。。
4、最后插入头文件包含,开始本来是在原来C文件里边#include最后一个后边插入,实际上不行,因为有的C文件最后百分之15左右也会有#include包含,到后边直接简单粗暴直接在第2行后插入,这能解决98%左右的问题,还有些使用的/**/多行注释的,插入了因为被注释掉了没有用,也不行;3、用的这个手段,好像大概意思是找到函数所在的行,向后10行中找第一个{,函数实现的时候会有实参列表啥的,实际上是把所有写入到 leftCurlyBracket.txt,所以这里用到>>
2024-08-12 22:18:27
616
原创 [git]error: invalid path ‘drivers/gpu/drm/nouveau/nvkm/subdev/i2c/aux.c‘
yes。
2024-07-30 17:25:43
612
原创 【linux】在多核CPU下,好像看到不同进程在不同CPU调度
开始想像的是操作系统上层的应用层创建文件,写入文件,创建目录,写入目录,在内核层肯定会调用到ext4文件系统类型对应的文件创建,写入文件,创建目录,写入目录。但是现在的问题是我们要去找对应的这四个函数(其实最好是先只找一个,找到一个后,其他三个就比较容易了),当时根据函数名字猜测会不是是这个数据结构。其实摸索syscall文件系统操作,本意是想找到内核文件系统中文件的创建,写入,目录创建,目录写入这样的流程。测试文件写,首先建立一个长时间下载的进程,时间太短容易退出,并且这个操作会写入文件。
2024-07-25 11:08:33
634
原创 【Linux】syscall sys_write流程摸索
到这张图的时候,599行已经执行了,在603行函数里的打印日志未打印出来,应该是走601行代码了。不是的,在实际里边是N多进程在不断切换,如果在打印日志里呈现的话,看过日志打印信息后,一般会生活不能自理。而在日志里看直接跳到call_write_iter这个函数了,中间有点奇怪。,开始我想,都打印这样详细的日志了,看内核源代码流程还不是轻松加愉快?日期,时间,当前文件所在代码目录,当前执行函数名,当前文件执行行号。基于这个缘故,我们在打印日志里添加了进程号信息。有了pid的这个参数后,看日志又方便了些。
2024-07-22 22:06:24
722
原创 【Linux】文件创建与写入系统调用流程摸索
第五行是搜索我们操作的文件名,看看在操作系统层面对文件的操作,内核里边源代码对应函数的打印的流程是否正确,因为有些函数同名函数很多,不一定是我们找到的,而且代码中函数里还有各种分支,判断等等,所以也有点点难度。第一行是打开日志输出(其实操作系统运行时日志是输出到/var/log/kern.log和/var/log/syslog里了,这也即是为什么我们老是去syslog文件搜索我们在内核源代码的打印信息);第二行是把字符串写入到一个文件,这个文件原来是没有的,其实就是创建文件,写入文件;
2024-07-19 11:06:41
439
原创 【Linux】SYSCALL_DEFINE4 openat执行流程摸索
在上一篇博客,我们基于pr_info这个内核类似c语言printf打印宏完成了打印,基本实现了自由开关打印,可以设定打印日志次数(代码写了,大概10行代码),在测试的时候发现居然还有意外收获,doge....从这个日志来看一共调用了1283次__do_sys_openat这个系统调用,注意1532这个行,也是跟日志能对上的。要注意,上边这日志量其实挺大,有兴趣的可以基于这个日志打印信息对照代码流程。但打印日志也有些不是文件操作的日志,需要注意下,对于学习是比较有用的。登录 - Gitee.com。
2024-07-18 13:34:49
998
原创 【LINUX】pr_info函数开发摸索
pr_info_self这里也可以扩展,不过这里的语法比较复杂,什么斜杠,fmt,双引号什么的,修改代码的时候要注意。2、打印次数,当前代码里边写的是1000次,其实可以根据传参动态修改打印日志次数,不过没有开发,只是大概展示了下;
2024-07-16 13:08:24
1072
原创 【Linux】内核文件系统系统调用流程摸索
1、代码内存越界,就是前一阵子碰到的打印filename这个变量,一般会出调用栈,不过不太容易看得到,因为开机日志显示翻页太快,页面显示到后边就卡死,黑白屏;其实这种过程是挺有意思,有些书讲内核运行原理,如果再配套查看内核运行实时日志,这样会更有意思,因为书上的知识是死的,而操作系统是活的,是动态的。我们打印的pid,tgid就是从这里来的,然后只需要找到pid_t的数据类型就好了。2、第二种:好像进入到 busybox,可以手动打印些dmesg的日志,黑白屏;登录 - Gitee.com。
2024-07-10 10:06:10
361
chatserverclientepoll
2018-08-04
类everything java源码
2018-06-13
Orange's chapter8a修改后可以查看消息流程的版本
2018-04-05
chapter5_i
2018-03-13
clicks模拟鼠标键盘
2016-03-13
[97世界编程大赛4K组]ts代码运行展示.mp4
2024-05-05
dmesg_with_pr_info_add_file_function.log
2019-11-03
kernel start log.txt with log
2019-10-29
boot.zip Linux kerner grub 5.0.1压缩包
2019-09-14
30day 的07_day 添加了大屏显示1024*768,适配了中文显示
2019-04-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人