用户故事 | 用好动态调试,助力课程学习
leveryd
该思维导图由 AI 生成,仅供参考
你好,我是 leveryd。
先做个自我介绍,我在网络安全行业从事技术工作,目前在负责安全产品的研发工作,工作六年。
虽然在研发工作中,我们通常是遇到什么问题就去查,边查边学。虽然这样的学习方式能快速解决问题,但有时候这种方法也不灵,比方说学习语义分析时,就必须要把词法分析、语法分析先学了,一通搜索、查阅、汇总和学习,回头一看,需要花费的时间和精力还是不少的。
显然,只靠自己在网上搜索,学到的常常是零零散散,效率太低。尤其是和工作的关联程度很高的必修知识,我觉得不太适合边查边学,更需要系统学习。结合自己的工作需要,今年年初的时候,我给自己安排了近期学习计划,定下了相应的学习的优先级。
其中,补充操作系统的专业知识就是高优先级的一项。近期学习《操作系统实战 45 讲》的过程中,我也跟着课程内容开始动手实践,还在课程群里分享了自己的调试经验。接到 LMOS 老师的邀请,今天我就和你聊聊我是怎样学习这门课程,以及我是如何调试课程代码的。
我是怎么学习《操作系统实战 45 讲》的
根据我的学习需求,我给自己立下了两个学习目标:
第一,理解第十三课的代码:第十三课之前的内容包括了整个机器初始化过程;
第二,理解第二十六课的代码:比第十三课内容多了“内存”和“进程”。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文介绍了作者在学习《操作系统实战45讲》课程中使用动态调试的经验。作者分享了使用GDB和QEMU进行动态调试的步骤,以及制作带调试符号的elf文件的详细步骤。通过分析GRUB头结构和Cosmos.eki文件头信息,作者验证了程序加载和执行的过程,解决了关于代码加载位置和CPU模式的疑问。文章强调了动态调试在技术学习和问题解决中的重要性,为读者提供了实际操作方法和调试案例。通过本文,读者可以快速了解动态调试的实际应用和操作技巧,对技术学习和问题解决具有一定的借鉴意义。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《操作系统实战 45 讲》,新⼈⾸单¥68
《操作系统实战 45 讲》,新⼈⾸单¥68
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(6)
- 最新
- 精选
- Geek_504185置顶需要添加-g 的地方如下: 1:initldr/build/krnlbuildcmd.mh文件中 BTCFLGS ,CFLAGS,CPPFLGSLDS三处需要添加-O0 -g 2:外层build文件夹里的pretreatment.mkf的CPPFLGSLDS后面也添加-O0 -g 编译要就可以安装文章中操作边调试边显示代码了
作者回复: 是的,感谢分享
2021-12-301 - 月鸟我是板凳! 千呼万唤始出来,等这篇调试等了3个星期了! 感谢你!
作者回复: 哈哈 赶紧试试
2021-12-1725 - 苏流郁宓很受用
编辑回复: 加油
2021-12-1723 - 月鸟如果大家按照作者的详细步骤操作时出现如下之类的问题: warning: No executable has been specified and target does not support determining executable automatically. Try using the "file" command. /etc/gdb/gdbinit:3: Error in sourced command file: Remote 'g' packet reply is too long (expected 308 bytes, got 608 bytes): 0000000000000000685301020080ffff0000000000000000ac2d00020080fffffe000000000000000000000000000000b0ff08000080ffff88ff08000080ffffff0000000000000000000000000000000000000000000000b025010000000000000000000000000000000000000000000000000000000000685301020080ffffe52d00020080ffff4600200008000000100000001000 这个问题是GDB调试64位Kernel时才有的,解决的方法是在进行gdb操作前先在(gdb)后面执行如下语句: (gdb) set architecture i386:x86-64:intel (gdb) target remote:1234 Remote debugging using :1234 (gdb) symbol-file Cosmos/build/Cosmos.elf Reading symbols from Cosmos/build/Cosmos.elf... (gdb) b *0x04000000 Breakpoint 1 at 0x4000000 (gdb) b *0x04000068 Breakpoint 3 at 0x4000068 (gdb) c Continuing. 玩吧!
作者回复: 6666
2021-12-182 - 摘星做完上面流程后 最后使用 qemu-system-x86_64 -drive format=raw,file=hd.img -m 512M -cpu kvm64,smep,smap -s 这个命令,qemu启动了,到grub菜单几秒后 依然弹出 错误提示:"My computer is not support ACPI" 啊? 我已经确定那个init_acpid函数已经注释了,也按照步骤 将hd.img更新了。
作者回复: 可能是没做对
2022-06-08 - 磊info all registers 怎么看不到cr0寄存器,搜索了一圈,也没找到gdb能显示cr0这一类控制寄存器的,请教下上图gdb这个怎么出来的?2022-03-271
收起评论