C/C++知识点之ubuntu18.04下linux4.17内核调试环境搭建
小标 2019-02-19 来源 : 阅读 1684 评论 0

摘要:本文主要向大家介绍了 C/C++知识点之ubuntu18.04下linux4.17内核调试环境搭建,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。

本文主要向大家介绍了 C/C++知识点之ubuntu18.04下linux4.17内核调试环境搭建,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。

C/C++知识点之ubuntu18.04下linux4.17内核调试环境搭建

版本linux4.17  ubuntu18.04
先给系统至少80G内存
1。编译内核
先配置文件
make mrproper
make menuconfig
我这里需要的依赖有


 sudo apt install make cmake gcc g++ clang
 sudo apt-get install libncurses5-dev libncursesw5-dev
 sudo apt install ncurses-dev
 sudo apt-get install bison
 sudo apt-get install flex
 sudo apt-get install linux-libc-dev:amd64
 sudo apt-get install libssl-dev


然后窗口调大点

打开相关选项:(我看了下好像全默认开启)

 Kernel: arch/x86/boot/bzImage is ready  (#1)
FATAL: drivers/scsi/am53c974.o has no symtab?
scripts/Makefile.modpost:92: recipe for target '__modpost' failed
Makefile:972: "Cannot use CONFIG_STACK_VALIDATION=y, please install libelf-dev


sudo apt install libelf-dev
换内核就先修改:
sudo gedit /etc/default/grub
注释第二行:

更新
sudo update-grub2

///////////////////////
拷贝被调试机上编译出来的vmlinux  到调试机上,与内核源码(是自己下载的内核源码这里是4.17)同级目录(内存足够多把编译生成的中间文件也可以一起拷贝)
然后
第一步建立串口通信

测试

开启调试环境
打开 /boot/grub/grub.cfg 文件,选择需要启动的内核版本,在尾部添kgdbwait kgdboc=ttyS0,115200
第一个菜单

对应

第二个菜单

对应

根据需要内核版本自定义设置
这里默认第一个菜单对一项
重启系统会断下

调试机
进入系统源码目录
gdb vmlinux

set remotebaud 115200 目前其实没有用
target remote /dev/ttyS0
还是有点问题 可能是符号也要拷贝吧

这里可能会有新内核启动不了的情况报cpu没有工作

我的做法是干掉原理的旧内核只要新内核,同时内核研究时一定要记得很定会有各种错。
个人觉得至少会有三个镜像。
第一个镜像是linux安装成功的镜像。防止编译,安装内核的各种错误。
第二个镜像。编译成功,或者直接是内核已经安装成功。 
第三个镜像搭建环境的镜像。

//////////////////////////////////////////////////////////
如果是不想开机就断下的话只要加上 kgdboc=ttyS0,115200

重启 root运行 echo g > /proc/sysrq-trigger
但是可能会报错误 说权限错误 重新设置下root密码就可以了 可以和原来密码一样


haidragon@ubuntu:~$ echo g > /proc/sys
sys/           sysrq-trigger  sysvipc/       
haidragon@ubuntu:~$ echo g > /proc/sys
sys/           sysrq-trigger  sysvipc/       
haidragon@ubuntu:~$ echo g > /proc/sys
sys/           sysrq-trigger  sysvipc/       
haidragon@ubuntu:~$ echo g > /proc/sysrq-trigger 
bash: /proc/sysrq-trigger: Permission denied
haidragon@ubuntu:~$ sudo echo g > /proc/sysrq-trigger 
bash: /proc/sysrq-trigger: Permission denied
haidragon@ubuntu:~$ su
Password: 
su: Authentication failure
haidragon@ubuntu:~$ sudo passwd root
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully
haidragon@ubuntu:~$ su
Password: 
root@ubuntu:/home/haidragon# echo g>/proc/sys
sys/           sysrq-trigger  sysvipc/       
root@ubuntu:/home/haidragon# echo g>/proc/sysrq-trigger 
root@ubuntu:/home/haidragon# 
root@ubuntu:/home/haidragon# 


运行后系统就会卡住

调试机运行gdb vmlinux
然后
set remotebaud 115200
target remote /dev/ttyS0

输入c运行


本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标编程语言C/C+频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 0
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved